--- old/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m 2020-08-05 17:14:36.000000000 -0700 +++ new/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m 2020-08-05 17:14:35.000000000 -0700 @@ -113,16 +113,16 @@ } - (void) setJavaLabel:(NSString *)theLabel shortcut:(NSString *)theKeyEquivalent modifierMask:(jint)modifiers { - + NSUInteger modifierMask = 0; - + if (![theKeyEquivalent isEqualToString:@""]) { // Force the key equivalent to lower case if not using the shift key. // Otherwise AppKit will draw a Shift glyph in the menu. if ((modifiers & java_awt_event_KeyEvent_SHIFT_MASK) == 0) { theKeyEquivalent = [theKeyEquivalent lowercaseString]; } - + // Hack for the question mark -- SHIFT and / means use the question mark. if ((modifiers & java_awt_event_KeyEvent_SHIFT_MASK) != 0 && [theKeyEquivalent isEqualToString:@"/"]) @@ -130,10 +130,10 @@ theKeyEquivalent = @"?"; modifiers &= ~java_awt_event_KeyEvent_SHIFT_MASK; } - + modifierMask = JavaModifiersToNsKeyModifiers(modifiers, NO); } - + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [fMenuItem setKeyEquivalent:theKeyEquivalent]; [fMenuItem setKeyEquivalentModifierMask:modifierMask]; @@ -142,14 +142,14 @@ } - (void) setJavaImage:(NSImage *)theImage { - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [fMenuItem setImage:theImage]; }]; } - (void) setJavaToolTipText:(NSString *)theText { - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [fMenuItem setToolTip:theText]; }]; @@ -157,11 +157,11 @@ - (void)setJavaEnabled:(BOOL) enabled { - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ @synchronized(self) { fIsEnabled = enabled; - + // Warning: This won't work if the parent menu is disabled. // See [CMenu syncFromJava]. We still need to call it here so // the NSMenuItem itself gets properly updated. @@ -171,7 +171,7 @@ } - (BOOL)isEnabled { - + BOOL enabled = NO; @synchronized(self) { enabled = fIsEnabled; @@ -181,7 +181,7 @@ - (void)setJavaState:(BOOL)newState { - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [fMenuItem setState:(newState ? NSOnState : NSOffState)]; }]; @@ -192,7 +192,7 @@ [fMenuItem setTarget:nil]; [fMenuItem release]; fMenuItem = nil; - + [super dealloc]; } @@ -217,7 +217,7 @@ /** Convert a Java keycode for SetMenuItemCmd */ static unichar AWTKeyToMacShortcut(jint awtKey, BOOL doShift) { unichar macKey = 0; - + if ((awtKey >= java_awt_event_KeyEvent_VK_0 && awtKey <= java_awt_event_KeyEvent_VK_9) || (awtKey >= java_awt_event_KeyEvent_VK_A && awtKey <= java_awt_event_KeyEvent_VK_Z)) { @@ -234,43 +234,43 @@ switch (awtKey) { case java_awt_event_KeyEvent_VK_BACK_QUOTE : macKey = '`'; break; case java_awt_event_KeyEvent_VK_QUOTE : macKey = '\''; break; - + case java_awt_event_KeyEvent_VK_ESCAPE : macKey = 0x1B; break; case java_awt_event_KeyEvent_VK_SPACE : macKey = ' '; break; case java_awt_event_KeyEvent_VK_PAGE_UP : macKey = NSPageUpFunctionKey; break; case java_awt_event_KeyEvent_VK_PAGE_DOWN : macKey = NSPageDownFunctionKey; break; case java_awt_event_KeyEvent_VK_END : macKey = NSEndFunctionKey; break; case java_awt_event_KeyEvent_VK_HOME : macKey = NSHomeFunctionKey; break; - + case java_awt_event_KeyEvent_VK_LEFT : macKey = NSLeftArrowFunctionKey; break; case java_awt_event_KeyEvent_VK_UP : macKey = NSUpArrowFunctionKey; break; case java_awt_event_KeyEvent_VK_RIGHT : macKey = NSRightArrowFunctionKey; break; case java_awt_event_KeyEvent_VK_DOWN : macKey = NSDownArrowFunctionKey; break; - + case java_awt_event_KeyEvent_VK_COMMA : macKey = ','; break; - + // Mac OS doesn't distinguish between the two '-' keys... case java_awt_event_KeyEvent_VK_MINUS : case java_awt_event_KeyEvent_VK_SUBTRACT : macKey = '-'; break; - + // or the two '.' keys... case java_awt_event_KeyEvent_VK_DECIMAL : case java_awt_event_KeyEvent_VK_PERIOD : macKey = '.'; break; - + // or the two '/' keys. case java_awt_event_KeyEvent_VK_DIVIDE : case java_awt_event_KeyEvent_VK_SLASH : macKey = '/'; break; - + case java_awt_event_KeyEvent_VK_SEMICOLON : macKey = ';'; break; case java_awt_event_KeyEvent_VK_EQUALS : macKey = '='; break; - + case java_awt_event_KeyEvent_VK_OPEN_BRACKET : macKey = '['; break; case java_awt_event_KeyEvent_VK_BACK_SLASH : macKey = '\\'; break; case java_awt_event_KeyEvent_VK_CLOSE_BRACKET : macKey = ']'; break; - + case java_awt_event_KeyEvent_VK_MULTIPLY : macKey = '*'; break; case java_awt_event_KeyEvent_VK_ADD : macKey = '+'; break; - + case java_awt_event_KeyEvent_VK_HELP : macKey = NSHelpFunctionKey; break; case java_awt_event_KeyEvent_VK_TAB : macKey = NSTabCharacter; break; case java_awt_event_KeyEvent_VK_ENTER : macKey = NSNewlineCharacter; break; @@ -314,18 +314,18 @@ NSString *theLabel = JNFJavaToNSString(env, label); NSString *theKeyEquivalent = nil; unichar macKey = shortcutKey; - + if (macKey == 0) { macKey = AWTKeyToMacShortcut(shortcutKeyCode, (mods & java_awt_event_KeyEvent_SHIFT_MASK) != 0); } - + if (macKey != 0) { unichar equivalent[1] = {macKey}; theKeyEquivalent = [NSString stringWithCharacters:equivalent length:1]; } else { theKeyEquivalent = @""; } - + [((CMenuItem *)jlong_to_ptr(menuItemObj)) setJavaLabel:theLabel shortcut:theKeyEquivalent modifierMask:mods]; JNF_COCOA_EXIT(env); } @@ -368,12 +368,12 @@ Java_sun_lwawt_macosx_CMenuItem_nativeCreate (JNIEnv *env, jobject peer, jlong parentCMenuObj, jboolean isSeparator) { - + __block CMenuItem *aCMenuItem = nil; BOOL asSeparator = (isSeparator == JNI_TRUE) ? YES: NO; CMenu *parentCMenu = (CMenu *)jlong_to_ptr(parentCMenuObj); JNF_COCOA_ENTER(env); - + jobject cPeerObjGlobal = (*env)->NewGlobalRef(env, peer); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ @@ -381,16 +381,16 @@ asSeparator: asSeparator]; // the CMenuItem is released in CMenuComponent.dispose() }]; - + if (aCMenuItem == nil) { return 0L; } - + // and add it to the parent item. [parentCMenu addJavaMenuItem: aCMenuItem]; - + // setLabel will be called after creation completes. - + JNF_COCOA_EXIT(env); return ptr_to_jlong(aCMenuItem); }