Scroll-snap animations should not start on axes with zero-delta
authorbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 May 2015 21:27:34 +0000 (21:27 +0000)
committerbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 May 2015 21:27:34 +0000 (21:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=145148

Reviewed by Dean Jackson.

Don't begin a scroll snap animation on an axis that had no change in position (on that axis)
during the gesture.

* platform/cocoa/ScrollController.mm:
(WebCore::ScrollController::processWheelEventForScrollSnapOnAxis): Don't begin a scroll snap
animation if no movement on this axis was ever made.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@184589 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/cocoa/ScrollController.mm

index cc6c28d..0e521fc 100644 (file)
@@ -1,3 +1,17 @@
+2015-05-19  Brent Fulgham  <bfulgham@apple.com>
+
+        Scroll-snap animations should not start on axes with zero-delta
+        https://bugs.webkit.org/show_bug.cgi?id=145148
+
+        Reviewed by Dean Jackson.
+
+        Don't begin a scroll snap animation on an axis that had no change in position (on that axis)
+        during the gesture.
+
+        * platform/cocoa/ScrollController.mm:
+        (WebCore::ScrollController::processWheelEventForScrollSnapOnAxis): Don't begin a scroll snap
+        animation if no movement on this axis was ever made.
+
 2015-05-19  Youenn Fablet  <youenn.fablet@crf.canon.fr>
 
         AudioContext should resolve promises with jsUndefined() and not jsNull()
index 48230fa..039b438 100644 (file)
@@ -547,7 +547,7 @@ void ScrollController::processWheelEventForScrollSnapOnAxis(ScrollEventAxis axis
             if (snapState.m_numWheelDeltasTracked < snapState.wheelDeltaWindowSize)
                 snapState.pushInitialWheelDelta(wheelDelta);
             
-            if (snapState.m_numWheelDeltasTracked == snapState.wheelDeltaWindowSize)
+            if ((snapState.m_numWheelDeltasTracked == snapState.wheelDeltaWindowSize) && snapState.averageInitialWheelDelta())
                 beginScrollSnapAnimation(axis, ScrollSnapState::Gliding);
         }
         break;