diff options
author | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-27 04:15:35 +0000 |
---|---|---|
committer | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-27 04:15:35 +0000 |
commit | b5eb42ed14dd7689d89486ec5dbf871ad5e79cb8 (patch) | |
tree | bc6d549d98b6e715f094f8c5c9666eb330b5353a | |
parent | 72cb675846bd4947910e8a3d5fd8dad315038c90 (diff) | |
download | chromium_src-b5eb42ed14dd7689d89486ec5dbf871ad5e79cb8.zip chromium_src-b5eb42ed14dd7689d89486ec5dbf871ad5e79cb8.tar.gz chromium_src-b5eb42ed14dd7689d89486ec5dbf871ad5e79cb8.tar.bz2 |
Don't show zoom bubble when wrench menu is running.
BUG=128817
R=rsesek@chromium.org
TEST=none
Review URL: https://chromiumcodereview.appspot.com/12334062
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184870 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/cocoa/menu_controller.h | 3 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/menu_controller.mm | 4 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/menu_controller_unittest.mm | 10 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm | 3 |
4 files changed, 19 insertions, 1 deletions
diff --git a/chrome/browser/ui/cocoa/menu_controller.h b/chrome/browser/ui/cocoa/menu_controller.h index 37c2ab4..c3e3766 100644 --- a/chrome/browser/ui/cocoa/menu_controller.h +++ b/chrome/browser/ui/cocoa/menu_controller.h @@ -56,6 +56,9 @@ class MenuModel; // default initializer was used, then this will create the menu on first call. - (NSMenu*)menu; +// Whether the menu is currently open. +- (BOOL)isMenuOpen; + // NSMenuDelegate methods this class implements. Subclasses should call super // if extending the behavior. - (void)menuWillOpen:(NSMenu*)menu; diff --git a/chrome/browser/ui/cocoa/menu_controller.mm b/chrome/browser/ui/cocoa/menu_controller.mm index 2aae2c6..96f48c9 100644 --- a/chrome/browser/ui/cocoa/menu_controller.mm +++ b/chrome/browser/ui/cocoa/menu_controller.mm @@ -215,6 +215,10 @@ return menu_.get(); } +- (BOOL)isMenuOpen { + return isMenuOpen_; +} + - (void)menuWillOpen:(NSMenu*)menu { isMenuOpen_ = YES; model_->MenuWillShow(); diff --git a/chrome/browser/ui/cocoa/menu_controller_unittest.mm b/chrome/browser/ui/cocoa/menu_controller_unittest.mm index efca488..8c5257a 100644 --- a/chrome/browser/ui/cocoa/menu_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/menu_controller_unittest.mm @@ -320,11 +320,21 @@ TEST_F(MenuControllerTest, OpenClose) { [[MenuController alloc] initWithModel:&model useWithPopUpButtonCell:NO]); delegate.menu_to_close_ = [menu menu]; + EXPECT_FALSE([menu isMenuOpen]); + + // In the event tracking run loop mode of the menu, verify that the controller + // resports the menu as open. + CFRunLoopPerformBlock(CFRunLoopGetCurrent(), NSEventTrackingRunLoopMode, ^{ + EXPECT_TRUE([menu isMenuOpen]); + }); + // Pop open the menu, which will spin an event-tracking run loop. [NSMenu popUpContextMenu:[menu menu] withEvent:nil forView:[test_window() contentView]]; + EXPECT_FALSE([menu isMenuOpen]); + // When control returns back to here, the menu will have finished running its // loop and will have closed itself (see Delegate::MenuWillShow). EXPECT_TRUE(delegate.did_show_); diff --git a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm index 2c02e5b..84fb38b 100644 --- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm +++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm @@ -448,7 +448,8 @@ class NotificationBridge } - (void)zoomChangedForActiveTab:(BOOL)canShowBubble { - locationBarView_->ZoomChangedForActiveTab(canShowBubble ? true : false); + locationBarView_->ZoomChangedForActiveTab( + canShowBubble && ![wrenchMenuController_ isMenuOpen]); } - (void)setIsLoading:(BOOL)isLoading force:(BOOL)force { |