Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
index c3a75b8478849f811cca78f57e40968d3326ea06..d8b1ab92974f3a7a85706217c1f259e72b931f19 100644 |
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
@@ -210,7 +210,6 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
- (void)addButtonsToView; |
- (void)centerNoItemsLabel; |
- (void)setNodeForBarMenu; |
-- (void)watchForExitEvent:(BOOL)watch; |
- (void)resetAllButtonPositionsWithAnimation:(BOOL)animate; |
- (BOOL)animationEnabled; |
@@ -326,7 +325,6 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
bridge_.reset(NULL); |
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
- [self watchForExitEvent:NO]; |
[super dealloc]; |
} |
@@ -519,7 +517,7 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
#pragma mark Actions |
- (IBAction)openBookmark:(id)sender { |
- BOOL isMenuItem = [[sender cell] isFolderButtonCell]; |
+ BOOL isMenuItem = [sender isFolder]; |
BOOL animate = isMenuItem && [self animationEnabled]; |
DCHECK([sender respondsToSelector:@selector(bookmarkNode)]); |
const BookmarkNode* node = [sender bookmarkNode]; |
@@ -779,59 +777,6 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
} |
} |
-// Main menubar observation code, so we can know to close our fake menus if the |
-// user clicks on the actual menubar, as multiple unconnected menus sharing |
-// the screen looks weird. |
-// Needed because the hookForEvent method doesn't see the click on the menubar. |
- |
-// Gets called when the menubar is clicked. |
-- (void)begunTracking:(NSNotification *)notification { |
- [self closeFolderAndStopTrackingMenus]; |
-} |
- |
-// Install the callback. |
-- (void)startObservingMenubar { |
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; |
- [nc addObserver:self |
- selector:@selector(begunTracking:) |
- name:NSMenuDidBeginTrackingNotification |
- object:[NSApp mainMenu]]; |
-} |
- |
-// Remove the callback. |
-- (void)stopObservingMenubar { |
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; |
- [nc removeObserver:self |
- name:NSMenuDidBeginTrackingNotification |
- object:[NSApp mainMenu]]; |
-} |
- |
-// End of menubar observation code. |
- |
-// Begin (or end) watching for a click outside this window. Unlike |
-// normal NSWindows, bookmark folder "fake menu" windows do not become |
-// key or main. Thus, traditional notification (e.g. WillResignKey) |
-// won't work. Our strategy is to watch (at the app level) for a |
-// "click outside" these windows to detect when they logically lose |
-// focus. |
-- (void)watchForExitEvent:(BOOL)watch { |
- CrApplication* app = static_cast<CrApplication*>([NSApplication |
- sharedApplication]); |
- DCHECK([app isKindOfClass:[CrApplication class]]); |
- if (watch) { |
- if (!watchingForExitEvent_) { |
- [app addEventHook:self]; |
- [self startObservingMenubar]; |
- } |
- } else { |
- if (watchingForExitEvent_) { |
- [app removeEventHook:self]; |
- [self stopObservingMenubar]; |
- } |
- } |
- watchingForExitEvent_ = watch; |
-} |
- |
// Keep the "no items" label centered in response to a frame size change. |
- (void)centerNoItemsLabel { |
// Note that this computation is done in the parent's coordinate system, |
@@ -1703,58 +1648,6 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
[[otherBookmarksButton_ cell] setTextColor:color]; |
} |
-// Return YES if the event indicates an exit from the bookmark bar |
-// folder menus. E.g. "click outside" of the area we are watching. |
-// At this time we are watching the area that includes all popup |
-// bookmark folder windows. |
-- (BOOL)isEventAnExitEvent:(NSEvent*)event { |
- NSWindow* eventWindow = [event window]; |
- NSWindow* myWindow = [[self view] window]; |
- switch ([event type]) { |
- case NSLeftMouseDown: |
- case NSRightMouseDown: |
- // If the click is in my window but NOT in the bookmark bar, consider |
- // it a click 'outside'. Clicks directly on an active button (i.e. one |
- // that is a folder and for which its folder menu is showing) are 'in'. |
- // All other clicks on the bookmarks bar are counted as 'outside' |
- // because they should close any open bookmark folder menu. |
- if (eventWindow == myWindow) { |
- NSView* hitView = |
- [[eventWindow contentView] hitTest:[event locationInWindow]]; |
- if (hitView == [folderController_ parentButton]) |
- return NO; |
- if (![hitView isDescendantOf:[self view]] || hitView == buttonView_) |
- return YES; |
- } |
- break; |
- case NSKeyDown: { |
- // Event hooks often see the same keydown event twice due to the way key |
- // events get dispatched and redispatched, so ignore if this keydown |
- // event has the EXACT same timestamp as the previous keydown. |
- static NSTimeInterval lastKeyDownEventTime; |
- NSTimeInterval thisTime = [event timestamp]; |
- if (lastKeyDownEventTime != thisTime) { |
- lastKeyDownEventTime = thisTime; |
- if ([event modifierFlags] & NSCommandKeyMask) |
- return YES; |
- } |
- return NO; |
- } |
- case NSKeyUp: |
- return NO; |
- case NSLeftMouseDragged: |
- // We can get here with the following sequence: |
- // - open a bookmark folder |
- // - right-click (and unclick) on it to open context menu |
- // - move mouse to window titlebar then click-drag it by the titlebar |
- // http://crbug.com/49333 |
- return NO; |
- default: |
- break; |
- } |
- return NO; |
-} |
- |
#pragma mark Drag & Drop |
// Find something like std::is_between<T>? I can't believe one doesn't exist. |
@@ -2241,7 +2134,6 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { |
// Close all bookmark folders. "Folder" here is the fake menu for |
// bookmark folders, not a button context menu. |
- (void)closeAllBookmarkFolders { |
- [self watchForExitEvent:NO]; |
[folderController_ closeMenu]; |
folderController_ = nil; |
} |
@@ -2428,10 +2320,6 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { |
[folderController_ autorelease]; |
[folderController_ openMenu]; |
- // Only BookmarkBarController has this; the |
- // BookmarkBarFolderController does not. |
- [self watchForExitEvent:YES]; |
- |
// No longer need to hold the lock; the folderController_ now owns it. |
[browserController releaseBarVisibilityForOwner:self |
withAnimation:NO |
@@ -2583,14 +2471,6 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { |
return nil; |
} |
-#pragma mark BookmarkButtonControllerProtocol |
- |
-// NOT an override of a standard Cocoa call made to NSViewControllers. |
-- (void)hookForEvent:(NSEvent*)theEvent { |
- if ([self isEventAnExitEvent:theEvent]) |
- [self closeFolderAndStopTrackingMenus]; |
-} |
- |
#pragma mark TestingAPI Only |
- (NSMenu*)buttonContextMenu { |