summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-20 17:28:40 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-20 17:28:40 +0000
commita5c1ec5d4fbd4bab0e1d179bffbb78d2e0dfbddf (patch)
tree31b91c6f8be5942b8d845e9bb68035fdec0d6b22
parent0a179f96d7576bae89c8fff704154e8d5d48e3f8 (diff)
downloadchromium_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.cc10
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) {