OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/app_controller_mac.h" | 5 #import "chrome/browser/app_controller_mac.h" |
6 | 6 |
7 #include "app/l10n_util_mac.h" | 7 #include "app/l10n_util_mac.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/mac_util.h" | 9 #include "base/mac_util.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 default: | 441 default: |
442 enable = menuState_->IsCommandEnabled(tag) ? YES : NO; | 442 enable = menuState_->IsCommandEnabled(tag) ? YES : NO; |
443 } | 443 } |
444 } | 444 } |
445 } else if (action == @selector(terminate:)) { | 445 } else if (action == @selector(terminate:)) { |
446 enable = YES; | 446 enable = YES; |
447 } else if (action == @selector(showPreferences:)) { | 447 } else if (action == @selector(showPreferences:)) { |
448 enable = YES; | 448 enable = YES; |
449 } else if (action == @selector(orderFrontStandardAboutPanel:)) { | 449 } else if (action == @selector(orderFrontStandardAboutPanel:)) { |
450 enable = YES; | 450 enable = YES; |
| 451 } else if (action == @selector(newWindowFromDock:)) { |
| 452 enable = YES; |
451 } | 453 } |
452 return enable; | 454 return enable; |
453 } | 455 } |
454 | 456 |
455 // Called when the user picks a menu item when there are no key windows. Calls | 457 // Called when the user picks a menu item when there are no key windows. Calls |
456 // through to the browser object to execute the command. This assumes that the | 458 // through to the browser object to execute the command. This assumes that the |
457 // command is supported and doesn't check, otherwise it would have been disabled | 459 // command is supported and doesn't check, otherwise it would have been disabled |
458 // in the UI in validateUserInterfaceItem:. | 460 // in the UI in validateUserInterfaceItem:. |
459 - (void)commandDispatch:(id)sender { | 461 - (void)commandDispatch:(id)sender { |
460 Profile* defaultProfile = [self defaultProfile]; | 462 Profile* defaultProfile = [self defaultProfile]; |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 addObserver:self | 662 addObserver:self |
661 selector:@selector(aboutWindowClosed:) | 663 selector:@selector(aboutWindowClosed:) |
662 name:kUserClosedAboutNotification | 664 name:kUserClosedAboutNotification |
663 object:aboutController_.get()]; | 665 object:aboutController_.get()]; |
664 } | 666 } |
665 if (![[aboutController_ window] isVisible]) | 667 if (![[aboutController_ window] isVisible]) |
666 [[aboutController_ window] center]; | 668 [[aboutController_ window] center]; |
667 [aboutController_ showWindow:self]; | 669 [aboutController_ showWindow:self]; |
668 } | 670 } |
669 | 671 |
| 672 // Explicitly bring to the foreground when creating new windows from the dock. |
| 673 - (void)newWindowFromDock:(id)sender { |
| 674 [NSApp activateIgnoringOtherApps:YES]; |
| 675 [self commandDispatch:sender]; |
| 676 } |
| 677 |
670 - (NSMenu*)applicationDockMenu:(id)sender { | 678 - (NSMenu*)applicationDockMenu:(id)sender { |
671 NSMenu* dockMenu = [[[NSMenu alloc] initWithTitle: @""] autorelease]; | 679 NSMenu* dockMenu = [[[NSMenu alloc] initWithTitle: @""] autorelease]; |
672 NSString* titleStr = l10n_util::GetNSStringWithFixup(IDS_NEW_WINDOW_MAC); | 680 NSString* titleStr = l10n_util::GetNSStringWithFixup(IDS_NEW_WINDOW_MAC); |
673 scoped_nsobject<NSMenuItem> item([[NSMenuItem alloc] | 681 scoped_nsobject<NSMenuItem> item([[NSMenuItem alloc] |
674 initWithTitle:titleStr | 682 initWithTitle:titleStr |
675 action:@selector(commandDispatch:) | 683 action:@selector(newWindowFromDock:) |
676 keyEquivalent:@""]); | 684 keyEquivalent:@""]); |
677 [item setTarget:self]; | 685 [item setTarget:self]; |
678 [item setTag:IDC_NEW_WINDOW]; | 686 [item setTag:IDC_NEW_WINDOW]; |
679 [dockMenu addItem:item]; | 687 [dockMenu addItem:item]; |
680 | 688 |
681 titleStr = l10n_util::GetNSStringWithFixup(IDS_NEW_INCOGNITO_WINDOW_MAC); | 689 titleStr = l10n_util::GetNSStringWithFixup(IDS_NEW_INCOGNITO_WINDOW_MAC); |
682 item.reset([[NSMenuItem alloc] initWithTitle:titleStr | 690 item.reset([[NSMenuItem alloc] initWithTitle:titleStr |
683 action:@selector(commandDispatch:) | 691 action:@selector(newWindowFromDock:) |
684 keyEquivalent:@""]); | 692 keyEquivalent:@""]); |
685 [item setTarget:self]; | 693 [item setTarget:self]; |
686 [item setTag:IDC_NEW_INCOGNITO_WINDOW]; | 694 [item setTag:IDC_NEW_INCOGNITO_WINDOW]; |
687 [dockMenu addItem:item]; | 695 [dockMenu addItem:item]; |
688 | 696 |
689 return dockMenu; | 697 return dockMenu; |
690 } | 698 } |
691 | 699 |
692 @end | 700 @end |
693 | 701 |
694 //--------------------------------------------------------------------------- | 702 //--------------------------------------------------------------------------- |
695 | 703 |
696 // Stub for cross-platform method that isn't called on Mac OS X. | 704 // Stub for cross-platform method that isn't called on Mac OS X. |
697 void ShowOptionsWindow(OptionsPage page, | 705 void ShowOptionsWindow(OptionsPage page, |
698 OptionsGroup highlight_group, | 706 OptionsGroup highlight_group, |
699 Profile* profile) { | 707 Profile* profile) { |
700 NOTIMPLEMENTED(); | 708 NOTIMPLEMENTED(); |
701 } | 709 } |
OLD | NEW |