mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:10:43 +07:00
IDEA-295159: obtain appmenu pointer on AppKit-thread
GitOrigin-RevId: a4ddefe47da198159fb64a2af2962083327e3344
This commit is contained in:
committed by
intellij-monorepo-bot
parent
62cb3f7bb6
commit
11c77aa610
Binary file not shown.
@@ -410,11 +410,21 @@ Java_com_intellij_ui_mac_screenmenu_Menu_nativeFindItemByTitle(JNIEnv *env, jobj
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_com_intellij_ui_mac_screenmenu_Menu_nativeGetAppMenu(JNIEnv *env, jclass peerClass) {
|
||||
NSMenu * mainMenu = [NSApplication sharedApplication].mainMenu;
|
||||
id appMenu = [mainMenu numberOfItems] > 0 ? [mainMenu itemAtIndex:0] : nil;
|
||||
if (appMenu != nil) {
|
||||
appMenu = [appMenu submenu];
|
||||
[appMenu retain];
|
||||
JNI_COCOA_ENTER();
|
||||
__block id appMenu = nil;
|
||||
dispatch_block_t block = ^{
|
||||
NSMenu * mainMenu = [NSApplication sharedApplication].mainMenu;
|
||||
appMenu = [mainMenu numberOfItems] > 0 ? [mainMenu itemAtIndex:0] : nil;
|
||||
if (appMenu != nil) {
|
||||
appMenu = [appMenu submenu];
|
||||
[appMenu retain];
|
||||
}
|
||||
};
|
||||
if ([NSThread isMainThread]) {
|
||||
block();
|
||||
} else {
|
||||
dispatch_async_and_wait(dispatch_get_main_queue(), block);
|
||||
}
|
||||
return (jlong)appMenu;
|
||||
JNI_COCOA_EXIT();
|
||||
}
|
||||
Reference in New Issue
Block a user