OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_container_view.h" | 5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_container_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #import "chrome/browser/ui/cocoa/view_id_util.h" | 10 #import "chrome/browser/ui/cocoa/view_id_util.h" |
11 | 11 |
12 NSString* const kBrowserActionGrippyDragStartedNotification = | 12 NSString* const kBrowserActionGrippyDragStartedNotification = |
13 @"BrowserActionGrippyDragStartedNotification"; | 13 @"BrowserActionGrippyDragStartedNotification"; |
14 NSString* const kBrowserActionGrippyDraggingNotification = | 14 NSString* const kBrowserActionGrippyDraggingNotification = |
15 @"BrowserActionGrippyDraggingNotification"; | 15 @"BrowserActionGrippyDraggingNotification"; |
16 NSString* const kBrowserActionGrippyDragFinishedNotification = | 16 NSString* const kBrowserActionGrippyDragFinishedNotification = |
17 @"BrowserActionGrippyDragFinishedNotification"; | 17 @"BrowserActionGrippyDragFinishedNotification"; |
| 18 NSString* const kBrowserActionGrippyWillDragNotification = |
| 19 @"BrowserActionGrippyWillDragNotification"; |
| 20 NSString* const kTranslationWithDelta = |
| 21 @"TranslationWithDelta"; |
18 | 22 |
19 namespace { | 23 namespace { |
20 const CGFloat kAnimationDuration = 0.2; | 24 const CGFloat kAnimationDuration = 0.2; |
21 const CGFloat kGrippyWidth = 4.0; | 25 const CGFloat kGrippyWidth = 4.0; |
22 const CGFloat kMinimumContainerWidth = 10.0; | 26 const CGFloat kMinimumContainerWidth = 10.0; |
23 } // namespace | 27 } // namespace |
24 | 28 |
25 @interface BrowserActionsContainerView(Private) | 29 @interface BrowserActionsContainerView(Private) |
26 // Returns the cursor that should be shown when hovering over the grippy based | 30 // Returns the cursor that should be shown when hovering over the grippy based |
27 // on |canDragLeft_| and |canDragRight_|. | 31 // on |canDragLeft_| and |canDragRight_|. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 | 115 |
112 NSPoint location = [self convertPoint:[theEvent locationInWindow] | 116 NSPoint location = [self convertPoint:[theEvent locationInWindow] |
113 fromView:nil]; | 117 fromView:nil]; |
114 NSRect containerFrame = [self frame]; | 118 NSRect containerFrame = [self frame]; |
115 CGFloat dX = [theEvent deltaX]; | 119 CGFloat dX = [theEvent deltaX]; |
116 CGFloat withDelta = location.x - dX; | 120 CGFloat withDelta = location.x - dX; |
117 canDragRight_ = (withDelta >= initialDragPoint_.x) && | 121 canDragRight_ = (withDelta >= initialDragPoint_.x) && |
118 (NSWidth(containerFrame) > kMinimumContainerWidth); | 122 (NSWidth(containerFrame) > kMinimumContainerWidth); |
119 canDragLeft_ = (withDelta <= initialDragPoint_.x) && | 123 canDragLeft_ = (withDelta <= initialDragPoint_.x) && |
120 (NSWidth(containerFrame) < maxWidth_); | 124 (NSWidth(containerFrame) < maxWidth_); |
| 125 |
| 126 // Notify others to see whether this dragging is allowed. |
| 127 if (canDragLeft_ || canDragRight_) { |
| 128 NSDictionary* userInfo = @{ kTranslationWithDelta : @(dX) }; |
| 129 [[NSNotificationCenter defaultCenter] |
| 130 postNotificationName:kBrowserActionGrippyWillDragNotification |
| 131 object:self |
| 132 userInfo:userInfo]; |
| 133 } |
| 134 |
121 if ((dX < 0.0 && !canDragLeft_) || (dX > 0.0 && !canDragRight_)) | 135 if ((dX < 0.0 && !canDragLeft_) || (dX > 0.0 && !canDragRight_)) |
122 return; | 136 return; |
123 | 137 |
124 containerFrame.size.width = | 138 containerFrame.size.width = |
125 std::max(NSWidth(containerFrame) - dX, kMinimumContainerWidth); | 139 std::max(NSWidth(containerFrame) - dX, kMinimumContainerWidth); |
126 | 140 |
127 if (NSWidth(containerFrame) == kMinimumContainerWidth) | 141 if (NSWidth(containerFrame) == kMinimumContainerWidth) |
128 return; | 142 return; |
129 | 143 |
130 containerFrame.origin.x += dX; | 144 containerFrame.origin.x += dX; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 retVal = [NSCursor resizeRightCursor]; | 196 retVal = [NSCursor resizeRightCursor]; |
183 } else if (!canDragRight_) { | 197 } else if (!canDragRight_) { |
184 retVal = [NSCursor resizeLeftCursor]; | 198 retVal = [NSCursor resizeLeftCursor]; |
185 } else { | 199 } else { |
186 retVal = [NSCursor resizeLeftRightCursor]; | 200 retVal = [NSCursor resizeLeftRightCursor]; |
187 } | 201 } |
188 return retVal; | 202 return retVal; |
189 } | 203 } |
190 | 204 |
191 @end | 205 @end |
OLD | NEW |