Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm

Issue 898543008: Fixed "Close Window" shortcut in File Menu for Hosted/Packaged apps. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Close window menu item only added at beginning Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698