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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/browser_actions_container_view.mm

Issue 2622613002: Revert of [Mac] Flip toolbar in RTL (Closed)
Patch Set: Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <utility> 8 #include <utility>
9 9
10 #import "chrome/browser/ui/cocoa/l10n_util.h"
11 #import "chrome/browser/ui/cocoa/view_id_util.h" 10 #import "chrome/browser/ui/cocoa/view_id_util.h"
12 #include "ui/base/cocoa/appkit_utils.h" 11 #include "ui/base/cocoa/appkit_utils.h"
13 #include "ui/events/keycodes/keyboard_code_conversion_mac.h" 12 #include "ui/events/keycodes/keyboard_code_conversion_mac.h"
14 13
15 NSString* const kBrowserActionGrippyDragStartedNotification = 14 NSString* const kBrowserActionGrippyDragStartedNotification =
16 @"BrowserActionGrippyDragStartedNotification"; 15 @"BrowserActionGrippyDragStartedNotification";
17 NSString* const kBrowserActionGrippyDraggingNotification = 16 NSString* const kBrowserActionGrippyDraggingNotification =
18 @"BrowserActionGrippyDraggingNotification"; 17 @"BrowserActionGrippyDraggingNotification";
19 NSString* const kBrowserActionGrippyDragFinishedNotification = 18 NSString* const kBrowserActionGrippyDragFinishedNotification =
20 @"BrowserActionGrippyDragFinishedNotification"; 19 @"BrowserActionGrippyDragFinishedNotification";
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 @synthesize maxDesiredWidth = maxDesiredWidth_; 51 @synthesize maxDesiredWidth = maxDesiredWidth_;
53 @synthesize userIsResizing = userIsResizing_; 52 @synthesize userIsResizing = userIsResizing_;
54 @synthesize delegate = delegate_; 53 @synthesize delegate = delegate_;
55 54
56 #pragma mark - 55 #pragma mark -
57 #pragma mark Overridden Class Functions 56 #pragma mark Overridden Class Functions
58 57
59 - (id)initWithFrame:(NSRect)frameRect { 58 - (id)initWithFrame:(NSRect)frameRect {
60 if ((self = [super initWithFrame:frameRect])) { 59 if ((self = [super initWithFrame:frameRect])) {
61 grippyRect_ = NSMakeRect(0.0, 0.0, kGrippyWidth, NSHeight([self bounds])); 60 grippyRect_ = NSMakeRect(0.0, 0.0, kGrippyWidth, NSHeight([self bounds]));
62 if (cocoa_l10n_util::ShouldDoExperimentalRTLLayout())
63 grippyRect_.origin.x = NSWidth(frameRect) - NSWidth(grippyRect_);
64
65 canDragLeft_ = YES; 61 canDragLeft_ = YES;
66 canDragRight_ = YES; 62 canDragRight_ = YES;
67 resizable_ = YES; 63 resizable_ = YES;
68 64
69 resizeAnimation_.reset([[NSViewAnimation alloc] init]); 65 resizeAnimation_.reset([[NSViewAnimation alloc] init]);
70 [resizeAnimation_ setDuration:kAnimationDuration]; 66 [resizeAnimation_ setDuration:kAnimationDuration];
71 [resizeAnimation_ setAnimationBlockingMode:NSAnimationNonblocking]; 67 [resizeAnimation_ setAnimationBlockingMode:NSAnimationNonblocking];
72 [resizeAnimation_ setDelegate:self]; 68 [resizeAnimation_ setDelegate:self];
73 69
74 [self setHidden:YES]; 70 [self setHidden:YES];
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 155
160 - (void)setIsOverflow:(BOOL)isOverflow { 156 - (void)setIsOverflow:(BOOL)isOverflow {
161 if (isOverflow_ != isOverflow) { 157 if (isOverflow_ != isOverflow) {
162 isOverflow_ = isOverflow; 158 isOverflow_ = isOverflow;
163 resizable_ = !isOverflow_; 159 resizable_ = !isOverflow_;
164 [self setNeedsDisplay:YES]; 160 [self setNeedsDisplay:YES];
165 } 161 }
166 } 162 }
167 163
168 - (void)resetCursorRects { 164 - (void)resetCursorRects {
169 if (cocoa_l10n_util::ShouldDoExperimentalRTLLayout())
170 grippyRect_.origin.x = NSWidth([self frame]) - NSWidth(grippyRect_);
171 [self addCursorRect:grippyRect_ cursor:[self appropriateCursorForGrippy]]; 165 [self addCursorRect:grippyRect_ cursor:[self appropriateCursorForGrippy]];
172 } 166 }
173 167
174 - (BOOL)acceptsFirstResponder { 168 - (BOOL)acceptsFirstResponder {
175 // The overflow container needs to receive key events to handle in-item 169 // The overflow container needs to receive key events to handle in-item
176 // navigation. The top-level container should not become first responder, 170 // navigation. The top-level container should not become first responder,
177 // allowing focus travel to proceed to the first action. 171 // allowing focus travel to proceed to the first action.
178 return isOverflow_; 172 return isOverflow_;
179 } 173 }
180 174
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 207
214 - (void)mouseDragged:(NSEvent*)theEvent { 208 - (void)mouseDragged:(NSEvent*)theEvent {
215 if (!userIsResizing_) 209 if (!userIsResizing_)
216 return; 210 return;
217 211
218 NSPoint location = [self convertPoint:[theEvent locationInWindow] 212 NSPoint location = [self convertPoint:[theEvent locationInWindow]
219 fromView:nil]; 213 fromView:nil];
220 NSRect containerFrame = [self frame]; 214 NSRect containerFrame = [self frame];
221 CGFloat dX = [theEvent deltaX]; 215 CGFloat dX = [theEvent deltaX];
222 CGFloat withDelta = location.x - dX; 216 CGFloat withDelta = location.x - dX;
223 BOOL isRTL = cocoa_l10n_util::ShouldDoExperimentalRTLLayout(); 217 canDragRight_ = (withDelta >= initialDragPoint_.x) &&
218 (NSWidth(containerFrame) > kMinimumContainerWidth);
219 CGFloat maxAllowedWidth = [self maxAllowedWidth];
220 containerFrame.size.width =
221 std::max(NSWidth(containerFrame) - dX, kMinimumContainerWidth);
222 canDragLeft_ = withDelta <= initialDragPoint_.x &&
223 NSWidth(containerFrame) < maxDesiredWidth_ &&
224 NSWidth(containerFrame) < maxAllowedWidth;
224 225
225 CGFloat maxAllowedWidth = [self maxAllowedWidth]; 226 if ((dX < 0.0 && !canDragLeft_) || (dX > 0.0 && !canDragRight_))
226
227 const CGFloat maxWidth = std::min(maxAllowedWidth, maxDesiredWidth_);
228 CGFloat newWidth = NSWidth(containerFrame) + (isRTL ? dX : -dX);
229 newWidth = std::min(std::max(newWidth, kMinimumContainerWidth), maxWidth);
230
231 BOOL canGrow = NSWidth(containerFrame) < maxWidth;
232 BOOL canShrink = NSWidth(containerFrame) > kMinimumContainerWidth;
233
234 canDragLeft_ =
235 withDelta <= initialDragPoint_.x && (isRTL ? canShrink : canGrow);
236 canDragRight_ =
237 (withDelta >= initialDragPoint_.x) && (isRTL ? canGrow : canShrink);
238 if ((dX < 0.0 && !canDragLeft_) || (dX > 0.0 && !canDragRight_) ||
239 fabs(dX) < FLT_EPSILON)
240 return; 227 return;
241 228
242 grippyPinned_ = newWidth >= maxAllowedWidth; 229 if (NSWidth(containerFrame) <= kMinimumContainerWidth)
243 if (!isRTL) 230 return;
244 containerFrame.origin.x += dX; 231
245 containerFrame.size.width = newWidth; 232 grippyPinned_ = NSWidth(containerFrame) >= maxAllowedWidth;
233 containerFrame.origin.x += dX;
246 234
247 [self setFrame:containerFrame]; 235 [self setFrame:containerFrame];
248 [self setNeedsDisplay:YES]; 236 [self setNeedsDisplay:YES];
249 237
250 [[NSNotificationCenter defaultCenter] 238 [[NSNotificationCenter defaultCenter]
251 postNotificationName:kBrowserActionGrippyDraggingNotification 239 postNotificationName:kBrowserActionGrippyDraggingNotification
252 object:self]; 240 object:self];
253 } 241 }
254 242
255 - (void)animationDidEnd:(NSAnimation*)animation { 243 - (void)animationDidEnd:(NSAnimation*)animation {
(...skipping 20 matching lines...) Expand all
276 264
277 - (ViewID)viewID { 265 - (ViewID)viewID {
278 return VIEW_ID_BROWSER_ACTION_TOOLBAR; 266 return VIEW_ID_BROWSER_ACTION_TOOLBAR;
279 } 267 }
280 268
281 #pragma mark - 269 #pragma mark -
282 #pragma mark Public Methods 270 #pragma mark Public Methods
283 271
284 - (void)resizeToWidth:(CGFloat)width animate:(BOOL)animate { 272 - (void)resizeToWidth:(CGFloat)width animate:(BOOL)animate {
285 width = std::max(width, kMinimumContainerWidth); 273 width = std::max(width, kMinimumContainerWidth);
286 NSRect newFrame = [self frame]; 274 NSRect frame = [self frame];
287 275
288 CGFloat maxAllowedWidth = [self maxAllowedWidth]; 276 CGFloat maxAllowedWidth = [self maxAllowedWidth];
289 width = std::min(maxAllowedWidth, width); 277 width = std::min(maxAllowedWidth, width);
290 278
291 if (cocoa_l10n_util::ShouldDoExperimentalRTLLayout()) { 279 CGFloat dX = frame.size.width - width;
292 newFrame.size.width = width; 280 frame.size.width = width;
293 } else { 281 NSRect newFrame = NSOffsetRect(frame, dX, 0);
294 CGFloat dX = NSWidth(newFrame) - width;
295 newFrame.size.width = width;
296 newFrame.origin.x += dX;
297 }
298 282
299 grippyPinned_ = width == maxAllowedWidth; 283 grippyPinned_ = width == maxAllowedWidth;
300 284
301 [self stopAnimation]; 285 [self stopAnimation];
302 286
303 if (animate) { 287 if (animate) {
304 NSDictionary* animationDictionary = @{ 288 NSDictionary* animationDictionary = @{
305 NSViewAnimationTargetKey : self, 289 NSViewAnimationTargetKey : self,
306 NSViewAnimationStartFrameKey : [NSValue valueWithRect:[self frame]], 290 NSViewAnimationStartFrameKey : [NSValue valueWithRect:[self frame]],
307 NSViewAnimationEndFrameKey : [NSValue valueWithRect:newFrame] 291 NSViewAnimationEndFrameKey : [NSValue valueWithRect:newFrame]
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 retVal = [NSCursor resizeLeftRightCursor]; 338 retVal = [NSCursor resizeLeftRightCursor];
355 } 339 }
356 return retVal; 340 return retVal;
357 } 341 }
358 342
359 - (CGFloat)maxAllowedWidth { 343 - (CGFloat)maxAllowedWidth {
360 return delegate_ ? delegate_->GetMaxAllowedWidth() : CGFLOAT_MAX; 344 return delegate_ ? delegate_->GetMaxAllowedWidth() : CGFLOAT_MAX;
361 } 345 }
362 346
363 @end 347 @end
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698