Chromium Code Reviews| 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 8a712ac82898a2043bfbd02afacde4dcf8204254..ca68e3cf917d10775cc4fc1fffa3f1c7969b8422 100644 |
| --- a/ui/events/gesture_detection/gesture_provider.cc |
| +++ b/ui/events/gesture_detection/gesture_provider.cc |
| @@ -47,6 +47,8 @@ GestureEventData CreateGesture(const GestureEventDetails& details, |
| base::TimeTicks time, |
| float x, |
| float y, |
| + float raw_x, |
| + float raw_y, |
| size_t touch_point_count, |
| const gfx::RectF& bounding_box) { |
| return GestureEventData(details, |
| @@ -54,7 +56,9 @@ GestureEventData CreateGesture(const GestureEventDetails& details, |
| time, |
| x, |
| y, |
| - static_cast<int>(touch_point_count), |
| + raw_x, |
| + raw_y, |
| + touch_point_count, |
|
tdresser
2014/06/19 21:12:37
I believe that the static_cast is required for som
jdduke (slow)
2014/06/19 21:43:34
Done. (moved the cast into the GestureEventData c
|
| bounding_box); |
| } |
| @@ -63,37 +67,36 @@ GestureEventData CreateGesture(EventType type, |
| base::TimeTicks time, |
| float x, |
| float y, |
| + float raw_x, |
| + float raw_y, |
| size_t touch_point_count, |
| const gfx::RectF& bounding_box) { |
| - return GestureEventData(type, |
| + return GestureEventData(GestureEventDetails(type, 0, 0), |
| motion_event_id, |
| time, |
| x, |
| y, |
| - static_cast<int>(touch_point_count), |
| + raw_x, |
| + raw_y, |
| + touch_point_count, |
| bounding_box); |
| } |
| GestureEventData CreateGesture(const GestureEventDetails& details, |
| const MotionEvent& event) { |
| - return CreateGesture(details, |
| - event.GetId(), |
| - event.GetEventTime(), |
| - event.GetX(), |
| - event.GetY(), |
| - event.GetPointerCount(), |
| - GetBoundingBox(event)); |
| + return GestureEventData(details, |
| + event.GetId(), |
| + event.GetEventTime(), |
| + event.GetX(), |
| + event.GetY(), |
| + event.GetRawX(), |
| + event.GetRawY(), |
| + event.GetPointerCount(), |
| + GetBoundingBox(event)); |
| } |
| -GestureEventData CreateGesture(EventType type, |
| - const MotionEvent& event) { |
| - return CreateGesture(type, |
| - event.GetId(), |
| - event.GetEventTime(), |
| - event.GetX(), |
| - event.GetY(), |
| - event.GetPointerCount(), |
| - GetBoundingBox(event)); |
| +GestureEventData CreateGesture(EventType type, const MotionEvent& event) { |
| + return CreateGesture(GestureEventDetails(type, 0, 0), event); |
| } |
| GestureEventDetails CreateTapGestureDetails(EventType type) { |
| @@ -154,13 +157,7 @@ class GestureProvider::ScaleGestureListenerImpl |
| const MotionEvent& e) OVERRIDE { |
| if (!pinch_event_sent_) |
| return; |
| - provider_->Send(CreateGesture(ET_GESTURE_PINCH_END, |
| - e.GetId(), |
| - detector.GetEventTime(), |
| - 0, |
| - 0, |
| - e.GetPointerCount(), |
| - GetBoundingBox(e))); |
| + provider_->Send(CreateGesture(ET_GESTURE_PINCH_END, e)); |
| pinch_event_sent_ = false; |
| } |
| @@ -175,6 +172,8 @@ class GestureProvider::ScaleGestureListenerImpl |
| detector.GetEventTime(), |
| detector.GetFocusX(), |
| detector.GetFocusY(), |
| + detector.GetFocusX() + e.GetRawOffsetX(), |
| + detector.GetFocusY() + e.GetRawOffsetY(), |
| e.GetPointerCount(), |
| GetBoundingBox(e))); |
| } |
| @@ -206,6 +205,8 @@ class GestureProvider::ScaleGestureListenerImpl |
| detector.GetEventTime(), |
| detector.GetFocusX(), |
| detector.GetFocusY(), |
| + detector.GetFocusX() + e.GetRawOffsetX(), |
| + detector.GetFocusY() + e.GetRawOffsetY(), |
| e.GetPointerCount(), |
| GetBoundingBox(e))); |
| return true; |
| @@ -345,19 +346,26 @@ class GestureProvider::GestureListenerImpl |
| e2.GetEventTime(), |
| e1.GetX(), |
| e1.GetY(), |
| + e1.GetRawX(), |
| + e1.GetRawY(), |
| e2.GetPointerCount(), |
| GetBoundingBox(e2))); |
| } |
| if (distance_x || distance_y) { |
| const gfx::RectF bounding_box = GetBoundingBox(e2); |
| + const gfx::PointF center = bounding_box.CenterPoint(); |
| + const gfx::PointF raw_center = |
| + center + gfx::Vector2dF(e2.GetRawOffsetX(), e2.GetRawOffsetY()); |
| GestureEventDetails scroll_details( |
| ET_GESTURE_SCROLL_UPDATE, -distance_x, -distance_y); |
| provider_->Send(CreateGesture(scroll_details, |
| e2.GetId(), |
| e2.GetEventTime(), |
| - bounding_box.CenterPoint().x(), |
| - bounding_box.CenterPoint().y(), |
| + center.x(), |
| + center.y(), |
| + raw_center.x(), |
| + raw_center.y(), |
| e2.GetPointerCount(), |
| bounding_box)); |
| } |
| @@ -402,6 +410,8 @@ class GestureProvider::GestureListenerImpl |
| e2.GetEventTime(), |
| e1.GetX(), |
| e1.GetY(), |
| + e1.GetRawX(), |
| + e1.GetRawY(), |
| e2.GetPointerCount(), |
| GetBoundingBox(e2))); |
| return true; |
| @@ -671,25 +681,13 @@ void GestureProvider::Send(GestureEventData gesture) { |
| case ET_GESTURE_SCROLL_END: |
| DCHECK(touch_scroll_in_progress_); |
| if (pinch_in_progress_) |
| - Send(CreateGesture(ET_GESTURE_PINCH_END, |
| - gesture.motion_event_id, |
| - gesture.time, |
| - gesture.x, |
| - gesture.y, |
| - gesture.details.touch_points(), |
| - gesture.details.bounding_box())); |
| + Send(GestureEventData(ET_GESTURE_PINCH_END, gesture)); |
| touch_scroll_in_progress_ = false; |
| break; |
| case ET_GESTURE_PINCH_BEGIN: |
| DCHECK(!pinch_in_progress_); |
| if (!touch_scroll_in_progress_) |
| - Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN, |
| - gesture.motion_event_id, |
| - gesture.time, |
| - gesture.x, |
| - gesture.y, |
| - gesture.details.touch_points(), |
| - gesture.details.bounding_box())); |
| + Send(GestureEventData(ET_GESTURE_SCROLL_BEGIN, gesture)); |
| pinch_in_progress_ = true; |
| break; |
| case ET_GESTURE_PINCH_END: |
| @@ -741,11 +739,14 @@ void GestureProvider::OnTouchEventHandlingBegin(const MotionEvent& event) { |
| break; |
| case MotionEvent::ACTION_POINTER_DOWN: |
| if (gesture_begin_end_types_enabled_) { |
| + const int action_index = event.GetActionIndex(); |
| Send(CreateGesture(ET_GESTURE_BEGIN, |
| event.GetId(), |
| event.GetEventTime(), |
| - event.GetX(event.GetActionIndex()), |
| - event.GetY(event.GetActionIndex()), |
| + event.GetX(action_index), |
| + event.GetY(action_index), |
| + event.GetRawX(action_index), |
| + event.GetRawY(action_index), |
| event.GetPointerCount(), |
| GetBoundingBox(event))); |
| } |
| @@ -775,6 +776,8 @@ void GestureProvider::OnTouchEventHandlingEnd(const MotionEvent& event) { |
| event.GetEventTime(), |
| event.GetX(i), |
| event.GetY(i), |
| + event.GetRawX(i), |
| + event.GetRawY(i), |
| event.GetPointerCount() - i, |
| bounding_box)); |
| } |