Set more sensible Flickable default input filtering parameters
authorMartin Jones <martin.jones@nokia.com>
Wed, 14 Mar 2012 06:56:46 +0000 (16:56 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 15 Mar 2012 03:22:43 +0000 (04:22 +0100)
Shouldn't throw anything away by default.  Also fix bug that
flicking back into bounds from outside bounds halved velocity.

Change-Id: I3c2d303a9e46910439dc8bfb01771376f634a684
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
src/quick/items/qquickflickable.cpp
tests/auto/quick/qquickflickable/tst_qquickflickable.cpp

index 2447fd6..b6d3ebd 100644 (file)
@@ -68,7 +68,7 @@ QT_BEGIN_NAMESPACE
 // The number of samples to discard when calculating the flick velocity.
 // Touch panels often produce inaccurate results as the finger is lifted.
 #ifndef QML_FLICK_DISCARDSAMPLES
-#define QML_FLICK_DISCARDSAMPLES 1
+#define QML_FLICK_DISCARDSAMPLES 0
 #endif
 
 // The default maximum velocity of a flick.
@@ -103,7 +103,7 @@ QT_BEGIN_NAMESPACE
 
 // FlickThreshold determines how far the "mouse" must have moved
 // before we perform a flick.
-static const int FlickThreshold = 20;
+static const int FlickThreshold = 15;
 
 // RetainGrabVelocity is the maxmimum instantaneous velocity that
 // will ensure the Flickable retains the grab on consecutive flicks.
@@ -1030,7 +1030,7 @@ void QQuickFlickablePrivate::handleMouseReleaseEvent(QMouseEvent *event)
         vVelocity = (extended && extended->capabilities().testFlag(QTouchDevice::Velocity))
                 ? extended->velocity().y() : vData.velocity;
     }
-    if (vData.atBeginning || vData.atEnd) {
+    if ((vData.atBeginning && vVelocity > 0.) || (vData.atEnd && vVelocity < 0.)) {
         vVelocity /= 2;
     } else if (vData.continuousFlickVelocity != 0.0
                && vData.viewSize/q->height() > QML_FLICK_MULTIFLICK_RATIO
@@ -1046,7 +1046,7 @@ void QQuickFlickablePrivate::handleMouseReleaseEvent(QMouseEvent *event)
         hVelocity = (extended && extended->capabilities().testFlag(QTouchDevice::Velocity))
                 ? extended->velocity().x() : hData.velocity;
     }
-    if (hData.atBeginning || hData.atEnd) {
+    if ((hData.atBeginning && hVelocity > 0.) || (hData.atEnd && hVelocity < 0.)) {
         hVelocity /= 2;
     } else if (hData.continuousFlickVelocity != 0.0
                && hData.viewSize/q->width() > QML_FLICK_MULTIFLICK_RATIO
index a2ecadf..4b157a4 100644 (file)
@@ -585,7 +585,7 @@ void tst_qquickflickable::flickVelocity()
     QQuickFlickablePrivate *fp = QQuickFlickablePrivate::get(flickable);
     bool boosted = false;
     for (int i = 0; i < 6; ++i) {
-        flick(canvas, QPoint(20,390), QPoint(20, 50), 200);
+        flick(canvas, QPoint(20,390), QPoint(20, 50), 100);
         boosted |= fp->flickBoost > 1.0;
     }
     QVERIFY(boosted);