Chromium Code Reviews| Index: chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm |
| diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm |
| index f0f47f94f444978e94891a56b8c2e7bf473ffd40..7b545e8926f6a467e2450faba71e7fc04c4aba6f 100644 |
| --- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm |
| +++ b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm |
| @@ -298,15 +298,15 @@ void SetItemWithTagVisible(NSMenuItem* top_level_item, |
| [[fileMenuItem_ submenu] addItem:[newDoppelganger_ menuItem]]; |
| [[fileMenuItem_ submenu] addItem:[openDoppelganger_ menuItem]]; |
| [[fileMenuItem_ submenu] addItem:[NSMenuItem separatorItem]]; |
| - AddDuplicateItem(fileMenuItem_, IDC_FILE_MENU, IDC_CLOSE_WINDOW); |
| - // Set the expected key equivalent explicitly here because |
| - // -[AppControllerMac adjustCloseWindowMenuItemKeyEquivalent:] sets it to |
| - // "W" (Cmd+Shift+w) when a tabbed window has focus; it will change it back |
| - // to Cmd+w when a non-tabbed window has focus. |
| - NSMenuItem* closeWindowMenuItem = |
| - [[fileMenuItem_ submenu] itemWithTag:IDC_CLOSE_WINDOW]; |
| - [closeWindowMenuItem setKeyEquivalent:@"w"]; |
| - [closeWindowMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; |
| + |
| + // Since the "Close Window" menu item will have the same shortcut as "Close |
| + // Tab" on the Chrome menu, we need to swap out these modifier keys |
| + // depending on the current menu we're displaying. |
| + closeWindowDuplicateMenuItem_.reset( |
| + [GetItemByTag(IDC_FILE_MENU, IDC_CLOSE_WINDOW) copy]); |
| + closeTabSourceMenuItem_.reset( |
| + [GetItemByTag(IDC_FILE_MENU, IDC_CLOSE_TAB) retain]); |
| + [[fileMenuItem_ submenu] addItem:closeWindowDuplicateMenuItem_]; |
| // Edit menu. We copy the menu because the last two items, "Start Dictation" |
| // and "Special Characters" are added by OSX, so we can't copy them |
| @@ -411,6 +411,17 @@ void SetItemWithTagVisible(NSMenuItem* top_level_item, |
| [appMenuItem_ setTitle:appId]; |
| [[appMenuItem_ submenu] setTitle:title]; |
| + // Remove the "Close Tab" key equivalent in the main menu first, then set |
| + // the key equivalent for our copy. |
| + [closeTabSourceMenuItem_ setKeyEquivalent:@""]; |
|
tapted
2015/02/04 05:02:49
this logic is pretty close to what DoppelgangerMen
jackhou1
2015/02/04 05:46:28
The "Close Window" item kind of has two source ite
mitchellj
2015/02/04 22:33:40
Good idea, this seems cleaner. Do you think the fu
|
| + |
| + // Set the expected key equivalent explicitly here because it may have been |
| + // either Cmd+Shift+w or Cmd+w. |
| + // See -[AppControllerMac adjustCloseWindowMenuItemKeyEquivalent:]. |
| + [closeWindowDuplicateMenuItem_ setKeyEquivalent:@"w"]; |
| + [closeWindowDuplicateMenuItem_ |
| + setKeyEquivalentModifierMask:NSCommandKeyMask]; |
| + |
| [mainMenu addItem:appMenuItem_]; |
| [mainMenu addItem:fileMenuItem_]; |
| @@ -434,6 +445,11 @@ void SetItemWithTagVisible(NSMenuItem* top_level_item, |
| appId_.reset(); |
| + // Restore the "Close Tab" key equivalent in the main menu. |
| + [closeWindowDuplicateMenuItem_ setKeyEquivalent:@""]; |
| + [closeTabSourceMenuItem_ setKeyEquivalent:@"w"]; |
| + [closeTabSourceMenuItem_ setKeyEquivalentModifierMask:NSCommandKeyMask]; |
| + |
| NSMenu* mainMenu = [NSApp mainMenu]; |
| [mainMenu removeItem:appMenuItem_]; |
| [mainMenu removeItem:fileMenuItem_]; |