diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-20 17:28:40 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-20 17:28:40 +0000 |
commit | a5c1ec5d4fbd4bab0e1d179bffbb78d2e0dfbddf (patch) | |
tree | 31b91c6f8be5942b8d845e9bb68035fdec0d6b22 | |
parent | 0a179f96d7576bae89c8fff704154e8d5d48e3f8 (diff) | |
download | chromium_src-a5c1ec5d4fbd4bab0e1d179bffbb78d2e0dfbddf.zip chromium_src-a5c1ec5d4fbd4bab0e1d179bffbb78d2e0dfbddf.tar.gz chromium_src-a5c1ec5d4fbd4bab0e1d179bffbb78d2e0dfbddf.tar.bz2 |
touch: Filter touch events.
Ignore touch-move events that don't actually change the touch location.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6323010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71962 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host_view_views.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_views.cc b/chrome/browser/renderer_host/render_widget_host_view_views.cc index 80804ad..d2e55fa7 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_views.cc +++ b/chrome/browser/renderer_host/render_widget_host_view_views.cc @@ -717,8 +717,16 @@ views::View::TouchStatus RenderWidgetHostViewViews::OnTouchEvent( status = TOUCH_STATUS_CONTINUE; // Update the location and state of the point. - UpdateTouchPointPosition(&e, GetPosition(), point); point->state = TouchPointStateFromEvent(&e); + if (point->state == WebKit::WebTouchPoint::StateMoved) { + // It is possible for badly written touch drivers to emit Move events even + // when the touch location hasn't changed. In such cases, consume the event + // and pretend nothing happened. + if (point->position.x == e.x() && point->position.y == e.y()) { + return status; + } + } + UpdateTouchPointPosition(&e, GetPosition(), point); // Mark the rest of the points as stationary. for (int i = 0; i < touch_event_.touchPointsLength; ++i) { |