Index: chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
diff --git a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
index a33f9a33888889e3ee24e189fb6be45b908c5e7d..626d8eb6a07d700455ff5a436cff9b1265b35da2 100644 |
--- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
+++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
@@ -90,6 +90,7 @@ const CGFloat kWrenchMenuLeftPadding = 3.0; |
- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate; |
- (void)maintainMinimumLocationBarWidth; |
- (void)adjustBrowserActionsContainerForNewWindow:(NSNotification*)notification; |
+- (void)browserActionsContainerWillDrag:(NSNotification*)notification; |
- (void)browserActionsContainerDragged:(NSNotification*)notification; |
- (void)browserActionsContainerDragFinished:(NSNotification*)notification; |
- (void)browserActionsVisibilityChanged:(NSNotification*)notification; |
@@ -591,6 +592,11 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate { |
containerView:browserActionsContainerView_]); |
[[NSNotificationCenter defaultCenter] |
addObserver:self |
+ selector:@selector(browserActionsContainerWillDrag:) |
+ name:kBrowserActionGrippyWillDragNotification |
+ object:browserActionsController_]; |
+ [[NSNotificationCenter defaultCenter] |
+ addObserver:self |
selector:@selector(browserActionsContainerDragged:) |
name:kBrowserActionGrippyDraggingNotification |
object:browserActionsController_]; |
@@ -639,6 +645,18 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate { |
[self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:YES]; |
} |
+- (void)browserActionsContainerWillDrag:(NSNotification*)notification { |
+ CGFloat deltaX = [[notification.userInfo objectForKey:kTranslationWithDelta] |
+ floatValue]; |
+ CGFloat locationBarWidth = NSWidth([locationBar_ frame]); |
+ BOOL locationBarWillBeAtMinSize = |
+ (locationBarWidth + deltaX) <= kMinimumLocationBarWidth; |
+ |
+ // Prevent the |browserActionsContainerView_| from dragging if the width of |
+ // location bar will reach the minimum. |
+ [browserActionsContainerView_ setCanDragLeft:!locationBarWillBeAtMinSize]; |
+} |
+ |
- (void)browserActionsVisibilityChanged:(NSNotification*)notification { |
[self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO]; |
} |