Index: Source/web/WebViewImpl.cpp |
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
index 48c5120e1a3c90d399edb2a6627479408dac94e3..4a63ac74c3a854cf766c3f7e1bfa9d5bd60b924a 100644 |
--- a/Source/web/WebViewImpl.cpp |
+++ b/Source/web/WebViewImpl.cpp |
@@ -666,6 +666,7 @@ bool WebViewImpl::scrollBy(const WebFloatSize& delta, const WebFloatSize& veloci |
syntheticGestureEvent.modifiers = m_flingModifier; |
syntheticGestureEvent.sourceDevice = WebGestureDeviceTouchscreen; |
syntheticGestureEvent.data.scrollUpdate.inertial = true; |
+ syntheticGestureEvent.data.scrollUpdate.railsMode = m_railStateOnFlingStart; |
if (m_page && m_page->mainFrame() && m_page->mainFrame()->isLocalFrame() && m_page->deprecatedLocalMainFrame()->view()) |
return handleGestureEvent(syntheticGestureEvent); |
@@ -689,6 +690,7 @@ bool WebViewImpl::handleGestureEvent(const WebGestureEvent& event) |
m_client->cancelScheduledContentIntents(); |
m_positionOnFlingStart = WebPoint(event.x, event.y); |
m_globalPositionOnFlingStart = WebPoint(event.globalX, event.globalY); |
+ m_railStateOnFlingStart = event.data.flingStart.railsMode; |
m_flingModifier = event.modifiers; |
m_flingSourceDevice = event.sourceDevice; |
OwnPtr<WebGestureCurve> flingCurve = adoptPtr(Platform::current()->createFlingAnimationCurve(event.sourceDevice, WebFloatPoint(event.data.flingStart.velocityX, event.data.flingStart.velocityY), WebSize())); |
@@ -1895,7 +1897,8 @@ void WebViewImpl::beginFrame(const WebBeginFrameArgs& frameTime) |
PlatformGestureEvent endScrollEvent(PlatformEvent::GestureScrollEnd, |
m_positionOnFlingStart, m_globalPositionOnFlingStart, |
IntSize(), 0, false, false, false, false); |
- endScrollEvent.setScrollGestureData(0, 0, 0, 0, true, false); |
+ endScrollEvent.setScrollGestureData(0, 0, 0, 0, true, false, |
+ PlatformEvent::RailsModeFree); |
mainFrameImpl()->frame()->eventHandler().handleGestureScrollEnd(endScrollEvent); |
} |