Index: content/renderer/input/input_handler_proxy.cc |
diff --git a/content/renderer/input/input_handler_proxy.cc b/content/renderer/input/input_handler_proxy.cc |
index f714ef1f3d956678b8ba0b3cd744f85715a142a7..1fc8a1dad061db0318e274620840f53448747a03 100644 |
--- a/content/renderer/input/input_handler_proxy.cc |
+++ b/content/renderer/input/input_handler_proxy.cc |
@@ -456,8 +456,18 @@ InputHandlerProxy::HandleGestureScrollUpdate( |
return DID_NOT_HANDLE; |
gfx::Point scroll_point(gesture_event.x, gesture_event.y); |
- gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX, |
- -gesture_event.data.scrollUpdate.deltaY); |
+ |
+ // TODO(tdresser): The rail information should be pushed down into |
+ // InputHandler. |
ccameron
2015/04/01 17:20:25
Oh, crap, I didn't do my TODO for this that I'd pr
tdresser
2015/04/01 17:22:45
Sounds good, thanks.
|
+ const float dx = gesture_event.data.scrollUpdate.deltaX; |
+ const float dy = gesture_event.data.scrollUpdate.deltaY; |
+ const WebInputEvent::RailsMode railsMode = |
+ gesture_event.data.scrollUpdate.railsMode; |
+ |
+ gfx::Vector2dF scroll_delta( |
+ railsMode != WebInputEvent::RailsModeVertical ? -dx : 0, |
+ railsMode != WebInputEvent::RailsModeHorizontal ? -dy : 0); |
+ |
cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollBy( |
scroll_point, scroll_delta); |
HandleOverscroll(scroll_point, scroll_result); |
@@ -501,9 +511,21 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart( |
if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) |
input_handler_->ScrollEnd(); |
- const float vx = gesture_event.data.flingStart.velocityX; |
- const float vy = gesture_event.data.flingStart.velocityY; |
- current_fling_velocity_ = gfx::Vector2dF(vx, vy); |
+ // TODO(tdresser): The rail information should be pushed down into |
+ // InputHandler. |
+ const WebInputEvent::RailsMode railsMode = |
+ gesture_event.data.flingStart.railsMode; |
+ |
+ float vx = railsMode != WebInputEvent::RailsModeVertical |
+ ? gesture_event.data.flingStart.velocityX |
+ : 0; |
+ float vy = railsMode != WebInputEvent::RailsModeHorizontal |
+ ? gesture_event.data.flingStart.velocityY |
+ : 0; |
+ |
+ current_fling_velocity_.set_x(vx); |
+ current_fling_velocity_.set_y(vy); |
+ |
DCHECK(!current_fling_velocity_.IsZero()); |
fling_curve_.reset(client_->CreateFlingAnimationCurve( |
gesture_event.sourceDevice, |