summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-13 18:36:46 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-13 18:36:46 +0000
commit9612e0a594ca40ff23a85b5d8af6de88dfc98dff (patch)
tree422fde4c448d54caffde8b0de788839d5fe7b5ac /chrome
parent4904fecc1c97870df095714b3edd02b78b748f56 (diff)
downloadchromium_src-9612e0a594ca40ff23a85b5d8af6de88dfc98dff.zip
chromium_src-9612e0a594ca40ff23a85b5d8af6de88dfc98dff.tar.gz
chromium_src-9612e0a594ca40ff23a85b5d8af6de88dfc98dff.tar.bz2
Make drag-to-activate session history dropdowns less sensitive. Patch from viettrunglu@gmail.com
BUG=19273 TEST=Make your mouse really sensitive; see if you can accidentally activate the back/forward history dropdowns. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23334 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/cocoa/clickhold_button_cell.mm15
1 files changed, 13 insertions, 2 deletions
diff --git a/chrome/browser/cocoa/clickhold_button_cell.mm b/chrome/browser/cocoa/clickhold_button_cell.mm
index c65971c..ce39d2a 100644
--- a/chrome/browser/cocoa/clickhold_button_cell.mm
+++ b/chrome/browser/cocoa/clickhold_button_cell.mm
@@ -10,6 +10,9 @@
static const NSTimeInterval kMinTimeout = 0.01;
static const NSTimeInterval kMaxTimeout = 3600.0;
+// Drag distance threshold to activate click-hold; should be >= 0.
+static const CGFloat kDragDistThreshold = 2.5;
+
@implementation ClickHoldButtonCell
// Overrides:
@@ -51,6 +54,7 @@ static const NSTimeInterval kMaxTimeout = 3600.0;
NSPoint currPoint = [controlView convertPoint:[originalEvent locationInWindow]
fromView:nil];
NSPoint lastPoint = currPoint;
+ NSPoint firstPoint = currPoint;
NSTimeInterval timeout =
MAX(MIN(clickHoldTimeout_, kMaxTimeout), kMinTimeout);
NSDate* clickHoldBailTime = [NSDate dateWithTimeIntervalSinceNow:timeout];
@@ -70,10 +74,17 @@ static const NSTimeInterval kMaxTimeout = 3600.0;
currPoint = [controlView convertPoint:[event locationInWindow]
fromView:nil];
- // Time-out or drag.
- if (!event || (activateOnDrag_ && ([event type] == NSLeftMouseDragged))) {
+ // Time-out.
+ if (!event) {
state = kStopClickHold;
+ // Drag? (If distance meets threshold.)
+ } else if (activateOnDrag_ && ([event type] == NSLeftMouseDragged)) {
+ CGFloat dx = currPoint.x - firstPoint.x;
+ CGFloat dy = currPoint.y - firstPoint.y;
+ if ((dx*dx + dy*dy) >= (kDragDistThreshold*kDragDistThreshold))
+ state = kStopClickHold;
+
// Mouse up.
} else if ([event type] == NSLeftMouseUp) {
state = kStopMouseUp;