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

Unified Diff: chrome/browser/app_controller_mac.mm

Issue 8302021: Prevent extension and bookmark popups from interfering with close window/tab shortcuts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/app_controller_mac.mm
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index 70ac660513c6c78302e0de7f4d43608dc8002c34..21488631af8828683c531f56f825eb8ecef10333 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -44,6 +44,7 @@
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
#import "chrome/browser/ui/cocoa/browser_window_cocoa.h"
#import "chrome/browser/ui/cocoa/browser_window_controller.h"
+#import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
#import "chrome/browser/ui/cocoa/confirm_quit_panel_controller.h"
#import "chrome/browser/ui/cocoa/encoding_menu_controller_delegate_mac.h"
#import "chrome/browser/ui/cocoa/history_menu_bridge.h"
@@ -353,8 +354,7 @@ const AEEventClass kAECloudPrintUninstallClass = 'GCPu';
}
// Helper routine to get the window controller if the key window is a tabbed
-// window, or nil if not. Examples of non-tabbed windows are "about" or
-// "preferences".
+// window, or nil if not. For example, the "about" window is non-tabbed.
- (TabWindowController*)keyWindowTabController {
NSWindowController* keyWindowController =
[[NSApp keyWindow] windowController];
@@ -365,8 +365,7 @@ const AEEventClass kAECloudPrintUninstallClass = 'GCPu';
}
// Helper routine to get the window controller if the main window is a tabbed
-// window, or nil if not. Examples of non-tabbed windows are "about" or
-// "preferences".
+// window, or nil if not. For example, the "about" window is non-tabbed.
- (TabWindowController*)mainWindowTabController {
NSWindowController* mainWindowController =
[[NSApp mainWindow] windowController];
@@ -411,9 +410,13 @@ const AEEventClass kAECloudPrintUninstallClass = 'GCPu';
- (void)fixCloseMenuItemKeyEquivalents:(NSWindow*)window {
fileMenuUpdatePending_ = NO;
TabWindowController* tabController = [self keyWindowTabController];
- if (!tabController && ![NSApp keyWindow]) {
- // There might be a small amount of time where there is no key window,
- // so just use our main browser window if there is one.
+ if (!tabController &&
+ (![NSApp keyWindow] ||
+ [[NSApp keyWindow] isKindOfClass:[ChromeEventProcessingWindow class]])) {
Ilya Sherman 2011/10/15 04:31:38 This seems a little hacky, but I wasn't sure of a
Scott Hess - ex-Googler 2011/10/19 02:43:41 I agree - I think that this is EXACTLY the kind of
+ // If the key window is a |ChromeEventProcessingWindow| (i.e. a bubble), the
+ // window that should handle the close menu item action is the main window.
+ // Also, there might be a small amount of time where there is no key window;
+ // in that case as well, just use our main browser window if there is one.
tabController = [self mainWindowTabController];
Scott Hess - ex-Googler 2011/10/19 02:43:41 Wow, this whole thing seems hokey. AFAICT, the on
}
BOOL hasTabs = !!tabController;

Powered by Google App Engine
This is Rietveld 408576698