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 f9cc75b9a80aaa2b1e80d9d0bb0ac06501b1eacd..57f425dd5ea02723361714d373517bc799f17fd7 100644 |
--- a/content/renderer/input/input_handler_proxy.cc |
+++ b/content/renderer/input/input_handler_proxy.cc |
@@ -332,6 +332,16 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( |
InputHandlerProxy::EventDisposition result = DID_NOT_HANDLE; |
cc::InputHandlerScrollResult scroll_result; |
+ // TODO(ccameron): The rail information should be pushed down into |
+ // InputHandler. |
+ gfx::Vector2dF scroll_delta( |
+ wheel_event.railsMode != WebInputEvent::RailsModeVertical |
+ ? -wheel_event.deltaX |
+ : 0, |
+ wheel_event.railsMode != WebInputEvent::RailsModeHorizontal |
+ ? -wheel_event.deltaY |
+ : 0); |
+ |
if (wheel_event.scrollByPage) { |
// TODO(jamesr): We don't properly handle scroll by page in the compositor |
// thread, so punt it to the main thread. http://crbug.com/236639 |
@@ -342,9 +352,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( |
result = DID_NOT_HANDLE; |
} else if (smooth_scroll_enabled_) { |
cc::InputHandler::ScrollStatus scroll_status = |
- input_handler_->ScrollAnimated( |
- gfx::Point(wheel_event.x, wheel_event.y), |
- gfx::Vector2dF(-wheel_event.deltaX, -wheel_event.deltaY)); |
+ input_handler_->ScrollAnimated(gfx::Point(wheel_event.x, wheel_event.y), |
+ scroll_delta); |
switch (scroll_status) { |
case cc::InputHandler::SCROLL_STARTED: |
result = DID_HANDLE; |
@@ -360,12 +369,11 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( |
gfx::Point(wheel_event.x, wheel_event.y), cc::InputHandler::WHEEL); |
switch (scroll_status) { |
case cc::InputHandler::SCROLL_STARTED: { |
- TRACE_EVENT_INSTANT2( |
- "input", "InputHandlerProxy::handle_input wheel scroll", |
- TRACE_EVENT_SCOPE_THREAD, "deltaX", -wheel_event.deltaX, "deltaY", |
- -wheel_event.deltaY); |
+ TRACE_EVENT_INSTANT2("input", |
+ "InputHandlerProxy::handle_input wheel scroll", |
+ TRACE_EVENT_SCOPE_THREAD, "deltaX", |
+ scroll_delta.x(), "deltaY", scroll_delta.y()); |
gfx::Point scroll_point(wheel_event.x, wheel_event.y); |
- gfx::Vector2dF scroll_delta(-wheel_event.deltaX, -wheel_event.deltaY); |
scroll_result = input_handler_->ScrollBy(scroll_point, scroll_delta); |
HandleOverscroll(scroll_point, scroll_result); |
input_handler_->ScrollEnd(); |