OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h" | 5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 - (void)containerDragStart:(NSNotification*)notification; | 112 - (void)containerDragStart:(NSNotification*)notification; |
113 | 113 |
114 // Sends a notification for the toolbar to reposition surrounding UI elements. | 114 // Sends a notification for the toolbar to reposition surrounding UI elements. |
115 - (void)containerDragging:(NSNotification*)notification; | 115 - (void)containerDragging:(NSNotification*)notification; |
116 | 116 |
117 // Determines which buttons need to be hidden based on the new size, hides them | 117 // Determines which buttons need to be hidden based on the new size, hides them |
118 // and updates the chevron overflow menu. Also fires a notification to let the | 118 // and updates the chevron overflow menu. Also fires a notification to let the |
119 // toolbar know that the drag has finished. | 119 // toolbar know that the drag has finished. |
120 - (void)containerDragFinished:(NSNotification*)notification; | 120 - (void)containerDragFinished:(NSNotification*)notification; |
121 | 121 |
| 122 // Sends a notification for the toolbar to determine whether the container can |
| 123 // translate with a delta on x-axis. |
| 124 - (void)containerWillTranslateOnX:(NSNotification*)notification; |
| 125 |
122 // Adjusts the position of the surrounding action buttons depending on where the | 126 // Adjusts the position of the surrounding action buttons depending on where the |
123 // button is within the container. | 127 // button is within the container. |
124 - (void)actionButtonDragging:(NSNotification*)notification; | 128 - (void)actionButtonDragging:(NSNotification*)notification; |
125 | 129 |
126 // Updates the position of the Browser Actions within the container. This fires | 130 // Updates the position of the Browser Actions within the container. This fires |
127 // when _any_ Browser Action button is done dragging to keep all open windows in | 131 // when _any_ Browser Action button is done dragging to keep all open windows in |
128 // sync visually. | 132 // sync visually. |
129 - (void)actionButtonDragFinished:(NSNotification*)notification; | 133 - (void)actionButtonDragFinished:(NSNotification*)notification; |
130 | 134 |
131 // Moves the given button both visually and within the toolbar model to the | 135 // Moves the given button both visually and within the toolbar model to the |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 [[NSNotificationCenter defaultCenter] | 311 [[NSNotificationCenter defaultCenter] |
308 addObserver:self | 312 addObserver:self |
309 selector:@selector(containerDragging:) | 313 selector:@selector(containerDragging:) |
310 name:kBrowserActionGrippyDraggingNotification | 314 name:kBrowserActionGrippyDraggingNotification |
311 object:containerView_]; | 315 object:containerView_]; |
312 [[NSNotificationCenter defaultCenter] | 316 [[NSNotificationCenter defaultCenter] |
313 addObserver:self | 317 addObserver:self |
314 selector:@selector(containerDragFinished:) | 318 selector:@selector(containerDragFinished:) |
315 name:kBrowserActionGrippyDragFinishedNotification | 319 name:kBrowserActionGrippyDragFinishedNotification |
316 object:containerView_]; | 320 object:containerView_]; |
| 321 [[NSNotificationCenter defaultCenter] |
| 322 addObserver:self |
| 323 selector:@selector(containerWillTranslateOnX:) |
| 324 name:kBrowseActionContainerWillTranslateOnXNotification |
| 325 object:containerView_]; |
317 // Listen for a finished drag from any button to make sure each open window | 326 // Listen for a finished drag from any button to make sure each open window |
318 // stays in sync. | 327 // stays in sync. |
319 [[NSNotificationCenter defaultCenter] | 328 [[NSNotificationCenter defaultCenter] |
320 addObserver:self | 329 addObserver:self |
321 selector:@selector(actionButtonDragFinished:) | 330 selector:@selector(actionButtonDragFinished:) |
322 name:kBrowserActionButtonDragEndNotification | 331 name:kBrowserActionButtonDragEndNotification |
323 object:nil]; | 332 object:nil]; |
324 | 333 |
325 chevronAnimation_.reset([[NSViewAnimation alloc] init]); | 334 chevronAnimation_.reset([[NSViewAnimation alloc] init]); |
326 [chevronAnimation_ gtm_setDuration:kAnimationDuration | 335 [chevronAnimation_ gtm_setDuration:kAnimationDuration |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 } | 679 } |
671 [self updateGrippyCursors]; | 680 [self updateGrippyCursors]; |
672 | 681 |
673 toolbarModel_->SetVisibleIconCount([self visibleButtonCount]); | 682 toolbarModel_->SetVisibleIconCount([self visibleButtonCount]); |
674 | 683 |
675 [[NSNotificationCenter defaultCenter] | 684 [[NSNotificationCenter defaultCenter] |
676 postNotificationName:kBrowserActionGrippyDragFinishedNotification | 685 postNotificationName:kBrowserActionGrippyDragFinishedNotification |
677 object:self]; | 686 object:self]; |
678 } | 687 } |
679 | 688 |
| 689 - (void)containerWillTranslateOnX:(NSNotification*)notification { |
| 690 [[NSNotificationCenter defaultCenter] |
| 691 postNotificationName:kBrowseActionContainerWillTranslateOnXNotification |
| 692 object:self |
| 693 userInfo:notification.userInfo]; |
| 694 } |
| 695 |
680 - (void)actionButtonDragging:(NSNotification*)notification { | 696 - (void)actionButtonDragging:(NSNotification*)notification { |
681 if (![self chevronIsHidden]) | 697 if (![self chevronIsHidden]) |
682 [self setChevronHidden:YES inFrame:[containerView_ frame] animate:YES]; | 698 [self setChevronHidden:YES inFrame:[containerView_ frame] animate:YES]; |
683 | 699 |
684 // Determine what index the dragged button should lie in, alter the model and | 700 // Determine what index the dragged button should lie in, alter the model and |
685 // reposition the buttons. | 701 // reposition the buttons. |
686 CGFloat dragThreshold = std::floor(kBrowserActionWidth / 2); | 702 CGFloat dragThreshold = std::floor(kBrowserActionWidth / 2); |
687 BrowserActionButton* draggedButton = [notification object]; | 703 BrowserActionButton* draggedButton = [notification object]; |
688 NSRect draggedButtonFrame = [draggedButton frame]; | 704 NSRect draggedButtonFrame = [draggedButton frame]; |
689 | 705 |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 const extensions::ExtensionList& toolbar_items = | 872 const extensions::ExtensionList& toolbar_items = |
857 toolbarModel_->toolbar_items(); | 873 toolbarModel_->toolbar_items(); |
858 if (index < toolbar_items.size()) { | 874 if (index < toolbar_items.size()) { |
859 const Extension* extension = toolbar_items[index].get(); | 875 const Extension* extension = toolbar_items[index].get(); |
860 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; | 876 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; |
861 } | 877 } |
862 return nil; | 878 return nil; |
863 } | 879 } |
864 | 880 |
865 @end | 881 @end |
OLD | NEW |