diff -r c9eda8d10ee1 glass/glass-mat-lib-macosx/src/com/sun/mat/ui/GlassMenu.m --- a/glass/glass-mat-lib-macosx/src/com/sun/mat/ui/GlassMenu.m Mon Jun 04 11:48:37 2012 -0700 +++ b/glass/glass-mat-lib-macosx/src/com/sun/mat/ui/GlassMenu.m Tue Jun 05 15:28:19 2012 -0400 @@ -11,7 +11,7 @@ #import "com_sun_glass_ui_mac_MacMenuBarDelegate.h" #import "com_sun_glass_ui_mac_MacMenuDelegate.h" -//#define VERBOSE +#define VERBOSE #ifndef VERBOSE #define LOG(MSG, ...) #else @@ -55,6 +55,7 @@ [self->menu setSubmenu:glassmenu->menu forItem:glassmenu->item]; [glassmenu->menu setAutoenablesItems:YES]; + // NSLog(@"GlassMenuBar insert: %@", [glassmenu->menu title]); if ([[glassmenu->item title] compare:@"Apple"] == NSOrderedSame) { @@ -92,14 +93,17 @@ self->jDelegate = (*env)->NewGlobalRef(env, jdelegate); self->item = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:getNSString(env, jtitle) action:NULL keyEquivalent:@""]; - if (jenabled == JNI_TRUE) + NSLog(@"GlassMenu title: %@ enabled: %d", getNSString(env, jtitle), jenabled); + self->_setEnabled = jenabled; + [self _setEnabled]; + /* if (jenabled == JNI_TRUE) { [self->item setEnabled:YES]; } else { [self->item setEnabled:NO]; - } + } */ [self->item setTarget:self]; } return self; @@ -121,14 +125,18 @@ NSString *shortcut = @""; self->item = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:getNSString(env, jtitle) action:@selector(action:) keyEquivalent:shortcut]; + NSLog(@"GlassMenuItem title: %@ enabled: %d", getNSString(env, jtitle), jenabled); if (jshortcut != '\0') { self->_setShortcutShortcut = jshortcut; self->_setShortcutModifiers = jmodifiers; [self _setShortcut]; } - - if (jenabled == JNI_TRUE) + self->_setEnabled = jenabled; + self->_setChecked = jchecked; + [self _setEnabled]; + [self _setChecked]; + /* if (jenabled == JNI_TRUE) { [self->item setEnabled:YES]; } @@ -143,7 +151,7 @@ else { [self->item setState:NSOffState]; - } + } */ if (jicon != NULL) { self->_setPixels = jicon; @@ -241,6 +249,7 @@ [self->menu setSubmenu:submenu->menu forItem:submenu->item]; [submenu->menu setAutoenablesItems:YES]; + NSLog(@"GlassMenu insert: %@", [submenu->menu title]); } else { @@ -271,10 +280,116 @@ - (void)_setShortcut { NSString *shortcut = @""; + unichar unicode = 0; + if (self->_setShortcutShortcut != '\0') { - shortcut = [NSString stringWithFormat:@"%c", self->_setShortcutShortcut]; - LOG("_setShortcut %c", self->_setShortcutShortcut); + switch (self->_setShortcutShortcut) + { + case com_sun_glass_events_KeyEvent_VK_LEFT: + unicode = NSLeftArrowFunctionKey; + break; + case com_sun_glass_events_KeyEvent_VK_RIGHT: + unicode = NSRightArrowFunctionKey; + break; + case com_sun_glass_events_KeyEvent_VK_UP: + unicode = NSUpArrowFunctionKey; + break; + case com_sun_glass_events_KeyEvent_VK_DOWN: + unicode = NSDownArrowFunctionKey; + break; + case com_sun_glass_events_KeyEvent_VK_ESCAPE: + unicode = 033; + break; + case com_sun_glass_events_KeyEvent_VK_LEFT_PARENTHESIS: + unicode = '('; + break; + case com_sun_glass_events_KeyEvent_VK_RIGHT_PARENTHESIS: + unicode = 0x29; + break; + case com_sun_glass_events_KeyEvent_VK_COLON: + unicode = ':'; + break; + case com_sun_glass_events_KeyEvent_VK_DOLLAR: + unicode = '$'; + break; + case com_sun_glass_events_KeyEvent_VK_EURO_SIGN: + unicode = 0x20AC; + break; + case com_sun_glass_events_KeyEvent_VK_EXCLAMATION: + unicode = '!'; + break; + case com_sun_glass_events_KeyEvent_VK_UNDERSCORE: + unicode = '_'; + break; + case com_sun_glass_events_KeyEvent_VK_AT: + unicode = 0x0040; + break; + case com_sun_glass_events_KeyEvent_VK_BRACELEFT: + unicode = '{'; + break; + case com_sun_glass_events_KeyEvent_VK_BRACERIGHT: + unicode = '}'; + break; + case com_sun_glass_events_KeyEvent_VK_LESS: + unicode = '<'; + break; + case com_sun_glass_events_KeyEvent_VK_GREATER: + unicode = '>'; + break; + case com_sun_glass_events_KeyEvent_VK_QUOTE: + unicode = '\''; + break; + case com_sun_glass_events_KeyEvent_VK_BACK_QUOTE: + unicode = '`'; + break; + case com_sun_glass_events_KeyEvent_VK_AMPERSAND: + unicode = '&'; + break; + case com_sun_glass_events_KeyEvent_VK_ASTERISK: + unicode = '*'; + break; + case com_sun_glass_events_KeyEvent_VK_DOUBLE_QUOTE: + unicode = '\"'; + break; + case com_sun_glass_events_KeyEvent_VK_NUMBER_SIGN: + unicode = '#'; + break; + case com_sun_glass_events_KeyEvent_VK_ADD: + unicode = '+'; + break; + case com_sun_glass_events_KeyEvent_VK_SUBTRACT: + unicode = '-'; + break; + case com_sun_glass_events_KeyEvent_VK_MULTIPLY: + unicode = '*'; + break; + case com_sun_glass_events_KeyEvent_VK_DIVIDE: + unicode = '/'; + break; + case com_sun_glass_events_KeyEvent_VK_CIRCUMFLEX: + unicode = 0x5e; + break; + case com_sun_glass_events_KeyEvent_VK_DECIMAL: + unicode = '.'; + break; + case com_sun_glass_events_KeyEvent_VK_DELETE: + unicode = 127; + break; + default: + break; + + } + if (unicode != 0) + { + shortcut = [NSString stringWithCharacters:&unicode length:1]; + } + else + { + shortcut = [NSString stringWithFormat:@"%c", self->_setShortcutShortcut]; + } + LOG("_setShortcut %x", self->_setShortcutShortcut); + NSLog(@"shortcut: %@", shortcut); } NSUInteger modifier = 0;