Index: ui/events/gestures/gesture_provider_aura.cc |
diff --git a/ui/events/gestures/gesture_provider_aura.cc b/ui/events/gestures/gesture_provider_aura.cc |
index 079884e3906de19ada82550638cdb830d5eb83ae..30200f93298763a0377919c2ce499bad8e0e4ee5 100644 |
--- a/ui/events/gestures/gesture_provider_aura.cc |
+++ b/ui/events/gestures/gesture_provider_aura.cc |
@@ -23,8 +23,8 @@ GestureProviderAura::GestureProviderAura(GestureProviderAuraClient* client) |
GestureProviderAura::~GestureProviderAura() {} |
bool GestureProviderAura::OnTouchEvent(const TouchEvent& event) { |
- bool pointer_id_is_active = |
- pointer_state_.FindPointerIndexOfId(event.touch_id()) != -1; |
+ int index = pointer_state_.FindPointerIndexOfId(event.touch_id()); |
+ bool pointer_id_is_active = index != -1; |
if (event.type() == ET_TOUCH_PRESSED && pointer_id_is_active) { |
// Ignore touch press events if we already believe the pointer is down. |
@@ -36,6 +36,14 @@ bool GestureProviderAura::OnTouchEvent(const TouchEvent& event) { |
return false; |
} |
+ // If this is a touchmove event, and it isn't different from the last |
+ // event, ignore it. |
+ if (event.type() == ET_TOUCH_MOVED && |
+ event.x() == pointer_state_.GetX(index) && |
+ event.y() == pointer_state_.GetY(index)) { |
+ return false; |
+ } |
+ |
last_touch_event_flags_ = event.flags(); |
last_touch_event_latency_info_ = *event.latency(); |
pointer_state_.OnTouch(event); |