Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h" | 5 #import "chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h" |
| 6 | 6 |
| 7 #include "base/mac/scoped_nsautorelease_pool.h" | 7 #include "base/mac/scoped_nsautorelease_pool.h" |
| 8 #include "base/strings/sys_string_conversions.h" | 8 #include "base/strings/sys_string_conversions.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "chrome/app/chrome_command_ids.h" | 10 #include "chrome/app/chrome_command_ids.h" |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 291 [appMenu addItem:[NSMenuItem separatorItem]]; | 291 [appMenu addItem:[NSMenuItem separatorItem]]; |
| 292 [appMenu addItem:[hideDoppelganger_ menuItem]]; | 292 [appMenu addItem:[hideDoppelganger_ menuItem]]; |
| 293 [appMenu addItem:[NSMenuItem separatorItem]]; | 293 [appMenu addItem:[NSMenuItem separatorItem]]; |
| 294 [appMenu addItem:[quitDoppelganger_ menuItem]]; | 294 [appMenu addItem:[quitDoppelganger_ menuItem]]; |
| 295 | 295 |
| 296 // File menu. | 296 // File menu. |
| 297 fileMenuItem_.reset([NewTopLevelItemFrom(IDC_FILE_MENU) retain]); | 297 fileMenuItem_.reset([NewTopLevelItemFrom(IDC_FILE_MENU) retain]); |
| 298 [[fileMenuItem_ submenu] addItem:[newDoppelganger_ menuItem]]; | 298 [[fileMenuItem_ submenu] addItem:[newDoppelganger_ menuItem]]; |
| 299 [[fileMenuItem_ submenu] addItem:[openDoppelganger_ menuItem]]; | 299 [[fileMenuItem_ submenu] addItem:[openDoppelganger_ menuItem]]; |
| 300 [[fileMenuItem_ submenu] addItem:[NSMenuItem separatorItem]]; | 300 [[fileMenuItem_ submenu] addItem:[NSMenuItem separatorItem]]; |
| 301 AddDuplicateItem(fileMenuItem_, IDC_FILE_MENU, IDC_CLOSE_WINDOW); | 301 |
| 302 // Set the expected key equivalent explicitly here because | 302 // Since the "Close Window" menu item will have the same shortcut as "Close |
| 303 // -[AppControllerMac adjustCloseWindowMenuItemKeyEquivalent:] sets it to | 303 // Tab" on the Chrome menu, we need to swap out these modifier keys |
| 304 // "W" (Cmd+Shift+w) when a tabbed window has focus; it will change it back | 304 // depending on the current menu we're displaying. |
| 305 // to Cmd+w when a non-tabbed window has focus. | 305 closeWindowDuplicateMenuItem_.reset( |
| 306 NSMenuItem* closeWindowMenuItem = | 306 [GetItemByTag(IDC_FILE_MENU, IDC_CLOSE_WINDOW) copy]); |
| 307 [[fileMenuItem_ submenu] itemWithTag:IDC_CLOSE_WINDOW]; | 307 closeTabSourceMenuItem_.reset( |
| 308 [closeWindowMenuItem setKeyEquivalent:@"w"]; | 308 [GetItemByTag(IDC_FILE_MENU, IDC_CLOSE_TAB) retain]); |
| 309 [closeWindowMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; | 309 [[fileMenuItem_ submenu] addItem:closeWindowDuplicateMenuItem_]; |
| 310 | 310 |
| 311 // Edit menu. We copy the menu because the last two items, "Start Dictation" | 311 // Edit menu. We copy the menu because the last two items, "Start Dictation" |
| 312 // and "Special Characters" are added by OSX, so we can't copy them | 312 // and "Special Characters" are added by OSX, so we can't copy them |
| 313 // explicitly. | 313 // explicitly. |
| 314 editMenuItem_.reset([[[NSApp mainMenu] itemWithTag:IDC_EDIT_MENU] copy]); | 314 editMenuItem_.reset([[[NSApp mainMenu] itemWithTag:IDC_EDIT_MENU] copy]); |
| 315 | 315 |
| 316 // View menu. Remove "Always Show Bookmark Bar" and separator. | 316 // View menu. Remove "Always Show Bookmark Bar" and separator. |
| 317 viewMenuItem_.reset([[[NSApp mainMenu] itemWithTag:IDC_VIEW_MENU] copy]); | 317 viewMenuItem_.reset([[[NSApp mainMenu] itemWithTag:IDC_VIEW_MENU] copy]); |
| 318 RemoveMenuItemWithTag(viewMenuItem_, IDC_SHOW_BOOKMARK_BAR, YES); | 318 RemoveMenuItemWithTag(viewMenuItem_, IDC_SHOW_BOOKMARK_BAR, YES); |
| 319 | 319 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 404 | 404 |
| 405 [aboutDoppelganger_ enableForApp:app]; | 405 [aboutDoppelganger_ enableForApp:app]; |
| 406 [hideDoppelganger_ enableForApp:app]; | 406 [hideDoppelganger_ enableForApp:app]; |
| 407 [quitDoppelganger_ enableForApp:app]; | 407 [quitDoppelganger_ enableForApp:app]; |
| 408 [newDoppelganger_ enableForApp:app]; | 408 [newDoppelganger_ enableForApp:app]; |
| 409 [openDoppelganger_ enableForApp:app]; | 409 [openDoppelganger_ enableForApp:app]; |
| 410 | 410 |
| 411 [appMenuItem_ setTitle:appId]; | 411 [appMenuItem_ setTitle:appId]; |
| 412 [[appMenuItem_ submenu] setTitle:title]; | 412 [[appMenuItem_ submenu] setTitle:title]; |
| 413 | 413 |
| 414 // Remove the "Close Tab" key equivalent in the main menu first, then set | |
| 415 // the key equivalent for our copy. | |
| 416 [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
| |
| 417 | |
| 418 // Set the expected key equivalent explicitly here because it may have been | |
| 419 // either Cmd+Shift+w or Cmd+w. | |
| 420 // See -[AppControllerMac adjustCloseWindowMenuItemKeyEquivalent:]. | |
| 421 [closeWindowDuplicateMenuItem_ setKeyEquivalent:@"w"]; | |
| 422 [closeWindowDuplicateMenuItem_ | |
| 423 setKeyEquivalentModifierMask:NSCommandKeyMask]; | |
| 424 | |
| 414 [mainMenu addItem:appMenuItem_]; | 425 [mainMenu addItem:appMenuItem_]; |
| 415 [mainMenu addItem:fileMenuItem_]; | 426 [mainMenu addItem:fileMenuItem_]; |
| 416 | 427 |
| 417 SetItemWithTagVisible(editMenuItem_, | 428 SetItemWithTagVisible(editMenuItem_, |
| 418 IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, | 429 IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, |
| 419 app->is_hosted_app(), true); | 430 app->is_hosted_app(), true); |
| 420 SetItemWithTagVisible(editMenuItem_, IDC_FIND_MENU, app->is_hosted_app(), | 431 SetItemWithTagVisible(editMenuItem_, IDC_FIND_MENU, app->is_hosted_app(), |
| 421 false); | 432 false); |
| 422 [mainMenu addItem:editMenuItem_]; | 433 [mainMenu addItem:editMenuItem_]; |
| 423 | 434 |
| 424 if (app->is_hosted_app()) { | 435 if (app->is_hosted_app()) { |
| 425 [mainMenu addItem:viewMenuItem_]; | 436 [mainMenu addItem:viewMenuItem_]; |
| 426 [mainMenu addItem:historyMenuItem_]; | 437 [mainMenu addItem:historyMenuItem_]; |
| 427 } | 438 } |
| 428 [mainMenu addItem:windowMenuItem_]; | 439 [mainMenu addItem:windowMenuItem_]; |
| 429 } | 440 } |
| 430 | 441 |
| 431 - (void)removeMenuItems { | 442 - (void)removeMenuItems { |
| 432 if (!appId_) | 443 if (!appId_) |
| 433 return; | 444 return; |
| 434 | 445 |
| 435 appId_.reset(); | 446 appId_.reset(); |
| 436 | 447 |
| 448 // Restore the "Close Tab" key equivalent in the main menu. | |
| 449 [closeWindowDuplicateMenuItem_ setKeyEquivalent:@""]; | |
| 450 [closeTabSourceMenuItem_ setKeyEquivalent:@"w"]; | |
| 451 [closeTabSourceMenuItem_ setKeyEquivalentModifierMask:NSCommandKeyMask]; | |
| 452 | |
| 437 NSMenu* mainMenu = [NSApp mainMenu]; | 453 NSMenu* mainMenu = [NSApp mainMenu]; |
| 438 [mainMenu removeItem:appMenuItem_]; | 454 [mainMenu removeItem:appMenuItem_]; |
| 439 [mainMenu removeItem:fileMenuItem_]; | 455 [mainMenu removeItem:fileMenuItem_]; |
| 440 if ([mainMenu indexOfItem:viewMenuItem_] >= 0) | 456 if ([mainMenu indexOfItem:viewMenuItem_] >= 0) |
| 441 [mainMenu removeItem:viewMenuItem_]; | 457 [mainMenu removeItem:viewMenuItem_]; |
| 442 if ([mainMenu indexOfItem:historyMenuItem_] >= 0) | 458 if ([mainMenu indexOfItem:historyMenuItem_] >= 0) |
| 443 [mainMenu removeItem:historyMenuItem_]; | 459 [mainMenu removeItem:historyMenuItem_]; |
| 444 [mainMenu removeItem:editMenuItem_]; | 460 [mainMenu removeItem:editMenuItem_]; |
| 445 [mainMenu removeItem:windowMenuItem_]; | 461 [mainMenu removeItem:windowMenuItem_]; |
| 446 | 462 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 489 | 505 |
| 490 - (void)focusCurrentPlatformApp { | 506 - (void)focusCurrentPlatformApp { |
| 491 extensions::AppWindow* appWindow = | 507 extensions::AppWindow* appWindow = |
| 492 AppWindowRegistryUtil::GetAppWindowForNativeWindowAnyProfile( | 508 AppWindowRegistryUtil::GetAppWindowForNativeWindowAnyProfile( |
| 493 [NSApp keyWindow]); | 509 [NSApp keyWindow]); |
| 494 if (appWindow) | 510 if (appWindow) |
| 495 apps::ExtensionAppShimHandler::FocusAppForWindow(appWindow); | 511 apps::ExtensionAppShimHandler::FocusAppForWindow(appWindow); |
| 496 } | 512 } |
| 497 | 513 |
| 498 @end | 514 @end |
| OLD | NEW |