| 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 8b9000ddad1e27d906fb1759a3a392c85ab0e372..dbe4de4cdc83b50b7a48d4494d7722fe1c7a8df4 100644
|
| --- a/ui/events/gesture_detection/gesture_provider.cc
|
| +++ b/ui/events/gesture_detection/gesture_provider.cc
|
| @@ -356,10 +356,17 @@ class GestureProvider::GestureListenerImpl
|
| }
|
|
|
| if (distance_x || distance_y) {
|
| + const gfx::RectF bounding_box = GetBoundingBox(e2);
|
| GestureEventDetails scroll_details(
|
| ET_GESTURE_SCROLL_UPDATE, -distance_x, -distance_y);
|
| - provider_->Send(
|
| - CreateGesture(ET_GESTURE_SCROLL_UPDATE, e2, scroll_details));
|
| + provider_->Send(CreateGesture(ET_GESTURE_SCROLL_UPDATE,
|
| + e2.GetId(),
|
| + e2.GetEventTime(),
|
| + bounding_box.CenterPoint().x(),
|
| + bounding_box.CenterPoint().y(),
|
| + e2.GetPointerCount(),
|
| + bounding_box,
|
| + scroll_details));
|
| }
|
|
|
| return true;
|
| @@ -739,8 +746,15 @@ void GestureProvider::OnTouchEventHandlingBegin(const MotionEvent& event) {
|
| Send(CreateGesture(ET_GESTURE_BEGIN, event));
|
| break;
|
| case MotionEvent::ACTION_POINTER_DOWN:
|
| - if (gesture_begin_end_types_enabled_)
|
| - Send(CreateGesture(ET_GESTURE_BEGIN, event));
|
| + if (gesture_begin_end_types_enabled_) {
|
| + Send(CreateGesture(ET_GESTURE_BEGIN,
|
| + event.GetId(),
|
| + event.GetEventTime(),
|
| + event.GetX(event.GetActionIndex()),
|
| + event.GetY(event.GetActionIndex()),
|
| + event.GetPointerCount(),
|
| + GetBoundingBox(event)));
|
| + }
|
| break;
|
| case MotionEvent::ACTION_POINTER_UP:
|
| case MotionEvent::ACTION_UP:
|
| @@ -753,18 +767,30 @@ void GestureProvider::OnTouchEventHandlingBegin(const MotionEvent& event) {
|
| void GestureProvider::OnTouchEventHandlingEnd(const MotionEvent& event) {
|
| switch (event.GetAction()) {
|
| case MotionEvent::ACTION_UP:
|
| - case MotionEvent::ACTION_CANCEL:
|
| + case MotionEvent::ACTION_CANCEL: {
|
| // Note: This call will have no effect if a fling was just generated, as
|
| // |Fling()| will have already signalled an end to touch-scrolling.
|
| EndTouchScrollIfNecessary(event, true);
|
|
|
| - if (gesture_begin_end_types_enabled_)
|
| - Send(CreateGesture(ET_GESTURE_END, event));
|
| + const gfx::RectF bounding_box = GetBoundingBox(event);
|
| +
|
| + if (gesture_begin_end_types_enabled_) {
|
| + for (size_t i = 0; i < event.GetPointerCount(); ++i) {
|
| + Send(CreateGesture(ET_GESTURE_END,
|
| + event.GetId(),
|
| + event.GetEventTime(),
|
| + event.GetX(i),
|
| + event.GetY(i),
|
| + event.GetPointerCount() - i,
|
| + bounding_box));
|
| + }
|
| + }
|
|
|
| current_down_event_.reset();
|
|
|
| UpdateDoubleTapDetectionSupport();
|
| break;
|
| + }
|
| case MotionEvent::ACTION_POINTER_UP:
|
| if (gesture_begin_end_types_enabled_)
|
| Send(CreateGesture(ET_GESTURE_END, event));
|
|
|