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 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 [[NSNotificationCenter defaultCenter] | 302 [[NSNotificationCenter defaultCenter] |
299 addObserver:self | 303 addObserver:self |
300 selector:@selector(containerDragging:) | 304 selector:@selector(containerDragging:) |
301 name:kBrowserActionGrippyDraggingNotification | 305 name:kBrowserActionGrippyDraggingNotification |
302 object:containerView_]; | 306 object:containerView_]; |
303 [[NSNotificationCenter defaultCenter] | 307 [[NSNotificationCenter defaultCenter] |
304 addObserver:self | 308 addObserver:self |
305 selector:@selector(containerDragFinished:) | 309 selector:@selector(containerDragFinished:) |
306 name:kBrowserActionGrippyDragFinishedNotification | 310 name:kBrowserActionGrippyDragFinishedNotification |
307 object:containerView_]; | 311 object:containerView_]; |
| 312 [[NSNotificationCenter defaultCenter] |
| 313 addObserver:self |
| 314 selector:@selector(containerWillTranslateOnX:) |
| 315 name:kBrowserActionGrippyWillDragNotification |
| 316 object:containerView_]; |
308 // Listen for a finished drag from any button to make sure each open window | 317 // Listen for a finished drag from any button to make sure each open window |
309 // stays in sync. | 318 // stays in sync. |
310 [[NSNotificationCenter defaultCenter] | 319 [[NSNotificationCenter defaultCenter] |
311 addObserver:self | 320 addObserver:self |
312 selector:@selector(actionButtonDragFinished:) | 321 selector:@selector(actionButtonDragFinished:) |
313 name:kBrowserActionButtonDragEndNotification | 322 name:kBrowserActionButtonDragEndNotification |
314 object:nil]; | 323 object:nil]; |
315 | 324 |
316 chevronAnimation_.reset([[NSViewAnimation alloc] init]); | 325 chevronAnimation_.reset([[NSViewAnimation alloc] init]); |
317 [chevronAnimation_ gtm_setDuration:kAnimationDuration | 326 [chevronAnimation_ gtm_setDuration:kAnimationDuration |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 } | 672 } |
664 [self updateGrippyCursors]; | 673 [self updateGrippyCursors]; |
665 | 674 |
666 toolbarModel_->SetVisibleIconCount([self visibleButtonCount]); | 675 toolbarModel_->SetVisibleIconCount([self visibleButtonCount]); |
667 | 676 |
668 [[NSNotificationCenter defaultCenter] | 677 [[NSNotificationCenter defaultCenter] |
669 postNotificationName:kBrowserActionGrippyDragFinishedNotification | 678 postNotificationName:kBrowserActionGrippyDragFinishedNotification |
670 object:self]; | 679 object:self]; |
671 } | 680 } |
672 | 681 |
| 682 - (void)containerWillTranslateOnX:(NSNotification*)notification { |
| 683 [[NSNotificationCenter defaultCenter] |
| 684 postNotificationName:kBrowserActionGrippyWillDragNotification |
| 685 object:self |
| 686 userInfo:notification.userInfo]; |
| 687 } |
| 688 |
673 - (void)actionButtonDragging:(NSNotification*)notification { | 689 - (void)actionButtonDragging:(NSNotification*)notification { |
674 if (![self chevronIsHidden]) | 690 if (![self chevronIsHidden]) |
675 [self setChevronHidden:YES inFrame:[containerView_ frame] animate:YES]; | 691 [self setChevronHidden:YES inFrame:[containerView_ frame] animate:YES]; |
676 | 692 |
677 // Determine what index the dragged button should lie in, alter the model and | 693 // Determine what index the dragged button should lie in, alter the model and |
678 // reposition the buttons. | 694 // reposition the buttons. |
679 CGFloat dragThreshold = std::floor(kBrowserActionWidth / 2); | 695 CGFloat dragThreshold = std::floor(kBrowserActionWidth / 2); |
680 BrowserActionButton* draggedButton = [notification object]; | 696 BrowserActionButton* draggedButton = [notification object]; |
681 NSRect draggedButtonFrame = [draggedButton frame]; | 697 NSRect draggedButtonFrame = [draggedButton frame]; |
682 | 698 |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 const extensions::ExtensionList& toolbar_items = | 865 const extensions::ExtensionList& toolbar_items = |
850 toolbarModel_->toolbar_items(); | 866 toolbarModel_->toolbar_items(); |
851 if (index < toolbar_items.size()) { | 867 if (index < toolbar_items.size()) { |
852 const Extension* extension = toolbar_items[index].get(); | 868 const Extension* extension = toolbar_items[index].get(); |
853 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; | 869 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; |
854 } | 870 } |
855 return nil; | 871 return nil; |
856 } | 872 } |
857 | 873 |
858 @end | 874 @end |
OLD | NEW |