| 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..f94efbf48331d85a7a5c8dfa9e0d601bc63ac075 100644
|
| --- a/ui/events/gesture_detection/gesture_provider.cc
|
| +++ b/ui/events/gesture_detection/gesture_provider.cc
|
| @@ -676,25 +676,20 @@ 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 pid = ev2.GetPointerId(i);
|
| + const MotionEvent* source_pointer_down_event =
|
| + gesture_detector_.GetSourcePointerDownEvent(
|
| + ev1, secondary_pointer_down, pid);
|
| + DCHECK(source_pointer_down_event);
|
| + int source_index =
|
| + gesture_detector_.getPointerIndex(*source_pointer_down_event, pid);
|
| + DCHECK_GE(source_index, 0);
|
| + 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;
|
| }
|
|
|