Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Unified Diff: ui/events/gesture_detection/gesture_provider.cc

Issue 2175803002: The helper functions for slop region check and subtraction are modified. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/gesture_detection/gesture_provider.cc
diff --git a/ui/events/gesture_detection/gesture_provider.cc b/ui/events/gesture_detection/gesture_provider.cc
index d29460a36dc3b0638fc7b8ba8e8938e377db387c..92e6199186eb3fc19081288029c8a387e8f4376a 100644
--- a/ui/events/gesture_detection/gesture_provider.cc
+++ b/ui/events/gesture_detection/gesture_provider.cc
@@ -676,25 +676,24 @@ class GestureProvider::GestureListenerImpl : public ScaleGestureListener,
// so Slop region is not deducted.
DCHECK(ev2.GetPointerCount() < 3);
- const int id0 = ev1.GetPointerId(0);
- const int ev_idx0 = ev2.GetPointerId(0) == id0 ? 0 : 1;
-
- // Subtract the slop region from the first pointer move.
- float dx0 = ev1.GetX() - ev2.GetX(ev_idx0);
- float dy0 = ev1.GetY() - ev2.GetY(ev_idx0);
- gfx::Vector2dF first_pointer_delta = SubtractSlopRegion(dx0, dy0);
-
- gfx::Vector2dF second_pointer_delta(0, 0);
- // Subtract the slop region from the second pointer move.
- if (ev2.GetPointerCount() == 2) {
- const int ev_idx1 = ev_idx0 == 0 ? 1 : 0;
- const int idx1 = secondary_pointer_down.GetActionIndex();
- float dx1 = secondary_pointer_down.GetX(idx1) - ev2.GetX(ev_idx1);
- float dy1 = secondary_pointer_down.GetY(idx1) - ev2.GetY(ev_idx1);
- second_pointer_delta = SubtractSlopRegion(dx1, dy1);
+ gfx::Vector2dF delta(0, 0);
+ for (size_t i = 0; i < ev2.GetPointerCount(); i++) {
+ const int pointer_id = ev2.GetPointerId(i);
+ const MotionEvent* source_pointer_down_event =
+ gesture_detector_.GetSourcePointerDownEvent(
+ ev1, secondary_pointer_down, pointer_id);
+ DCHECK(source_pointer_down_event);
+ if (!source_pointer_down_event)
+ continue;
+ int source_index =
+ source_pointer_down_event->FindPointerIndexOfId(pointer_id);
+ DCHECK_GE(source_index, 0);
+ if (source_index < 0)
+ continue;
+ float dx = source_pointer_down_event->GetX(source_index) - ev2.GetX(i);
+ float dy = source_pointer_down_event->GetY(source_index) - ev2.GetY(i);
+ delta += SubtractSlopRegion(dx, dy);
}
-
- gfx::Vector2dF delta = first_pointer_delta + second_pointer_delta;
delta.Scale(1.0 / ev2.GetPointerCount());
return delta;
}
« no previous file with comments | « ui/events/gesture_detection/gesture_detector.cc ('k') | ui/events/gesture_detection/gesture_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698