diff options
Diffstat (limited to 'native/MacScreenMenu/src/Menu.m')
-rw-r--r-- | native/MacScreenMenu/src/Menu.m | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/native/MacScreenMenu/src/Menu.m b/native/MacScreenMenu/src/Menu.m index 0e296a732204..f3f6ef3e02b6 100644 --- a/native/MacScreenMenu/src/Menu.m +++ b/native/MacScreenMenu/src/Menu.m @@ -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(); }
\ No newline at end of file |