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

Unified Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm

Issue 7462018: [Mac] "Refactor" DraggableButton into a mixin and impl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698