diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-13 18:36:46 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-13 18:36:46 +0000 |
commit | 9612e0a594ca40ff23a85b5d8af6de88dfc98dff (patch) | |
tree | 422fde4c448d54caffde8b0de788839d5fe7b5ac /chrome | |
parent | 4904fecc1c97870df095714b3edd02b78b748f56 (diff) | |
download | chromium_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.mm | 15 |
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; |