From b68d7ce5e7e3466409c942c514064d45b31ee666 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Fri, 22 Aug 2014 10:58:53 +0200
Subject: [PATCH] <third_party/WebKit> Apply Qt defaults to scroll animations

This patch applies the Qt scroll animation configuration from WebKit.
This makes the scrolling more responsive and smooth when used with
touchpad scroll gestures or free spinning scroll wheels.

Change-Id: I2f17185f3e95c6bc84608cc4c3945dba2d67faa8
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
---
 .../platform/scroll/ScrollAnimatorNone.cpp     | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/chromium/third_party/WebKit/Source/platform/scroll/ScrollAnimatorNone.cpp b/chromium/third_party/WebKit/Source/platform/scroll/ScrollAnimatorNone.cpp
index 3a4e7ed612e..df7c3cc3336 100644
--- a/chromium/third_party/WebKit/Source/platform/scroll/ScrollAnimatorNone.cpp
+++ b/chromium/third_party/WebKit/Source/platform/scroll/ScrollAnimatorNone.cpp
@@ -381,6 +381,7 @@ ScrollAnimatorNone::~ScrollAnimatorNone()
 
 ScrollAnimatorNone::Parameters ScrollAnimatorNone::parametersForScrollGranularity(ScrollGranularity granularity) const
 {
+#if !defined(TOOLKIT_QT)
     switch (granularity) {
     case ScrollByDocument:
         return Parameters(true, 20 * kTickTime, 10 * kTickTime, Cubic, 10 * kTickTime, Cubic, 10 * kTickTime, Linear, 1);
@@ -393,6 +394,23 @@ ScrollAnimatorNone::Parameters ScrollAnimatorNone::parametersForScrollGranularit
     default:
         ASSERT_NOT_REACHED();
     }
+#else
+    // This is a slightly different strategy for the animation with a steep attack curve and natural release curve.
+    // The fast acceleration makes the animation look more responsive to user input. The natural release curve makes
+    // the animation compatible with that of free-spinning mouse-wheel or emulated scroll on release by touchpads.
+    switch (granularity) {
+    case ScrollByDocument:
+        return Parameters(true, 20 * kTickTime, 10 * kTickTime, Cubic, 6 * kTickTime, Quadratic, 10 * kTickTime, Quadratic, 30 * kTickTime);
+    case ScrollByLine:
+        return Parameters(true, 6 * kTickTime, 5 * kTickTime, Cubic, 1 * kTickTime, Quadratic, 4 * kTickTime, Linear, 12 * kTickTime);
+    case ScrollByPage:
+        return Parameters(true, 12 * kTickTime, 10 * kTickTime, Cubic, 3 * kTickTime, Quadratic, 6 * kTickTime, Linear, 24 * kTickTime);
+    case ScrollByPixel:
+        return Parameters(true, 8 * kTickTime, 3 * kTickTime, Cubic, 2 * kTickTime, Quadratic, 5 * kTickTime, Quadratic, 16 * kTickTime);
+    default:
+        ASSERT_NOT_REACHED();
+    }
+#endif
     return Parameters();
 }
 
-- 
GitLab