Chromium Code Reviews| Index: chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm |
| diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm |
| index fbe76b2b2ef7d47de6012932fc8646a269f3981d..2f3cbcb5605537e38db545745d6bc97382de62d1 100644 |
| --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm |
| +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm |
| @@ -4,6 +4,8 @@ |
| #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" |
| +#include <complex> |
|
Mark Mentovai
2011/08/11 00:51:17
<cmath> (see elsewhere for rationale)
|
| + |
| #include "base/logging.h" |
| #import "base/memory/scoped_nsobject.h" |
| #include "chrome/browser/bookmarks/bookmark_model.h" |
| @@ -122,23 +124,23 @@ BookmarkButton* gDraggedButton = nil; // Weak |
| [super updateTrackingAreas]; |
| } |
| -- (BOOL)deltaIndicatesDragStartWithXDelta:(float)xDelta |
| - yDelta:(float)yDelta |
| - xHysteresis:(float)xHysteresis |
| - yHysteresis:(float)yHysteresis { |
| +- (DraggableButtonResult)deltaIndicatesDragStartWithXDelta:(float)xDelta |
| + yDelta:(float)yDelta |
| + xHysteresis:(float)xHysteresis |
| + yHysteresis:(float)yHysteresis |
| + indicates:(BOOL*)result { |
| const float kDownProportion = 1.4142135f; // Square root of 2. |
| // We want to show a folder menu when you drag down on folder buttons, |
| // so don't classify this as a drag for that case. |
| if ([self isFolder] && |
| - (yDelta <= -yHysteresis) && // Bottom of hysteresis box was hit. |
| - (ABS(yDelta)/ABS(xDelta)) >= kDownProportion) |
| - return NO; |
| - |
| - return [super deltaIndicatesDragStartWithXDelta:xDelta |
| - yDelta:yDelta |
| - xHysteresis:xHysteresis |
| - yHysteresis:yHysteresis]; |
| + (yDelta <= -yHysteresis) && // Bottom of hysteresis box was hit. |
| + (std::abs(yDelta) / std::abs(xDelta)) >= kDownProportion) { |
| + *result = NO; |
| + return kDraggableButtonMixinDidWork; |
| + } |
| + |
| + return kDraggableButtonImplUseBase; |
| } |
| @@ -218,7 +220,7 @@ BookmarkButton* gDraggedButton = nil; // Weak |
| } |
| // Overridden to release bar visibility. |
| -- (void)endDrag { |
| +- (DraggableButtonResult)endDrag { |
| gDraggedButton = nil; |
| // visibilityDelegate_ can be nil if we're detached, and that's fine. |
| @@ -226,7 +228,8 @@ BookmarkButton* gDraggedButton = nil; // Weak |
| withAnimation:YES |
| delay:YES]; |
| visibilityDelegate_ = nil; |
| - [super endDrag]; |
| + |
| + return kDraggableButtonImplUseBase; |
|
Mark Mentovai
2011/08/11 00:51:17
In a sense, this is actually cleaner than what it
|
| } |
| - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal { |
| @@ -255,9 +258,10 @@ BookmarkButton* gDraggedButton = nil; // Weak |
| } |
| } |
| -- (void)performMouseDownAction:(NSEvent*)theEvent { |
| +- (DraggableButtonResult)performMouseDownAction:(NSEvent*)theEvent { |
| [[self target] performSelector:[self action] withObject:self]; |
| - self.actionHasFired = YES; |
| + self.draggableButton.actionHasFired = YES; |
| + return kDraggableButtonMixinDidWork; |
| } |
| // BookmarkButtonCell. We redirect this information to our delegate. |
| @@ -291,10 +295,11 @@ BookmarkButton* gDraggedButton = nil; // Weak |
| } |
| // This only gets called after a click that wasn't a drag, and only on folders. |
| -- (void)secondaryMouseUpAction:(BOOL)wasInside { |
| +- (DraggableButtonResult)secondaryMouseUpAction:(BOOL)wasInside { |
| const NSTimeInterval kShortClickLength = 0.5; |
| // Long clicks that end over the folder button result in the menu hiding. |
| - if (wasInside && ([self durationMouseWasDown] > kShortClickLength)) { |
| + if (wasInside && |
| + self.draggableButton.durationMouseWasDown > kShortClickLength) { |
| [[self target] performSelector:[self action] withObject:self]; |
| } else { |
| // Mouse tracked out of button during menu track. Hide menus. |
| @@ -302,6 +307,7 @@ BookmarkButton* gDraggedButton = nil; // Weak |
| [delegate_ bookmarkDragDidEnd:self |
| operation:NSDragOperationNone]; |
| } |
| + return kDraggableButtonMixinDidWork; |
| } |
| @end |