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

Unified Diff: chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm

Issue 1009613002: [Toolbar UI Mac] Fix omnibox minimum width (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Avi's Created 5 years, 9 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/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 f71d45dd52cc728c465a1b9bf554379c8a176175..ea9f76d8a869d4f986512938cf399fc9daa9b0ae 100644
--- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
+++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
@@ -81,6 +81,42 @@ const CGFloat kMinimumLocationBarWidth = 100.0;
// The amount of left padding that the wrench menu should have.
const CGFloat kWrenchMenuLeftPadding = 3.0;
+class BrowserActionsContainerDelegate :
+ public BrowserActionsContainerViewSizeDelegate {
+ public:
+ BrowserActionsContainerDelegate(
+ AutocompleteTextField* location_bar,
+ BrowserActionsContainerView* browser_actions_container_view);
+ ~BrowserActionsContainerDelegate() override;
+
+ private:
+ // BrowserActionsContainerSizeDelegate:
+ CGFloat GetMaxAllowedWidth() override;
+
+ AutocompleteTextField* location_bar_;
+ BrowserActionsContainerView* browser_actions_container_;
+
+ DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainerDelegate);
+};
+
+BrowserActionsContainerDelegate::BrowserActionsContainerDelegate(
+ AutocompleteTextField* location_bar,
+ BrowserActionsContainerView* browser_actions_container_view)
+ : location_bar_(location_bar),
+ browser_actions_container_(browser_actions_container_view) {
+ [browser_actions_container_ setDelegate:this];
+}
+
+BrowserActionsContainerDelegate::~BrowserActionsContainerDelegate() {
+ [browser_actions_container_ setDelegate:nil];
+}
+
+CGFloat BrowserActionsContainerDelegate::GetMaxAllowedWidth() {
+ CGFloat location_bar_flex =
+ NSWidth([location_bar_ frame]) - kMinimumLocationBarWidth;
+ return NSWidth([browser_actions_container_ frame]) + location_bar_flex;
+}
+
} // namespace
@interface ToolbarController()
@@ -93,7 +129,6 @@ const CGFloat kWrenchMenuLeftPadding = 3.0;
- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate;
- (void)maintainMinimumLocationBarWidth;
- (void)adjustBrowserActionsContainerForNewWindow:(NSNotification*)notification;
-- (void)browserActionsContainerWillDrag:(NSNotification*)notification;
- (void)browserActionsContainerDragged:(NSNotification*)notification;
- (void)browserActionsVisibilityChanged:(NSNotification*)notification;
- (void)browserActionsContainerWillAnimate:(NSNotification*)notification;
@@ -184,6 +219,8 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
- (void)dealloc {
+ browserActionsContainerDelegate_.reset();
+
// Unset ViewIDs of toolbar elements.
// ViewIDs of |toolbarView|, |reloadButton_|, |locationBar_| and
// |browserActionsContainerView_| are handled by themselves.
@@ -589,17 +626,15 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
- (void)createBrowserActionButtons {
if (!browserActionsController_.get()) {
+ browserActionsContainerDelegate_.reset(
+ new BrowserActionsContainerDelegate(locationBar_,
+ browserActionsContainerView_));
browserActionsController_.reset([[BrowserActionsController alloc]
initWithBrowser:browser_
containerView:browserActionsContainerView_
mainController:nil]);
[[NSNotificationCenter defaultCenter]
addObserver:self
- selector:@selector(browserActionsContainerWillDrag:)
- name:kBrowserActionGrippyWillDragNotification
- object:browserActionsContainerView_];
- [[NSNotificationCenter defaultCenter]
- addObserver:self
selector:@selector(browserActionsContainerDragged:)
name:kBrowserActionGrippyDraggingNotification
object:browserActionsContainerView_];
@@ -637,24 +672,10 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
- (void)browserActionsContainerDragged:(NSNotification*)notification {
CGFloat locationBarWidth = NSWidth([locationBar_ frame]);
locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth;
- [browserActionsContainerView_ setCanDragLeft:!locationBarAtMinSize_];
- [browserActionsContainerView_ setGrippyPinned:locationBarAtMinSize_];
[self adjustLocationSizeBy:
[browserActionsContainerView_ resizeDeltaX] animate:NO];
}
-- (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];
}
@@ -665,7 +686,7 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate {
CGFloat locationBarXPos = NSMaxX([locationBar_ frame]);
- CGFloat leftDistance;
+ CGFloat leftDistance = 0.0;
if ([browserActionsContainerView_ isHidden]) {
CGFloat edgeXPos = [wrenchButton_ frame].origin.x;

Powered by Google App Engine
This is Rietveld 408576698