summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-04-19 05:50:35 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-04-19 05:50:35 (GMT)
commit1390f6f1208ca914ee801ff8be1352fc0b094f62 (patch)
tree543101ad0108844b2e28d20692bc2466778296b2 /src
parent2075925adaa1a1c78b6da9dc10d2b1a165178363 (diff)
downloadQt-1390f6f1208ca914ee801ff8be1352fc0b094f62.zip
Qt-1390f6f1208ca914ee801ff8be1352fc0b094f62.tar.gz
Qt-1390f6f1208ca914ee801ff8be1352fc0b094f62.tar.bz2
Avoid painfully slow flicking to snap positions.
Task-number: QTBUG-9994
Diffstat (limited to 'src')
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 5a0292f..672f723 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -50,6 +50,7 @@
#include <qdeclarativeguard_p.h>
#include <qlistmodelinterface_p.h>
+#include <qmath.h>
#include <QKeyEvent>
QT_BEGIN_NAMESPACE
@@ -1206,7 +1207,15 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
data.flickTarget -= overshootDist;
}
}
- dist = -data.flickTarget + data.move.value();
+ qreal adjDist = -data.flickTarget + data.move.value();
+ if (qAbs(adjDist) > qAbs(dist)) {
+ // Prevent painfully slow flicking - adjust velocity to suit flickDeceleration
+ v2 = accel * 2.0f * qAbs(dist);
+ v = qSqrt(v2);
+ if (dist > 0)
+ v = -v;
+ }
+ dist = adjDist;
accel = v2 / (2.0f * qAbs(dist));
} else if (overShoot) {
data.flickTarget = data.move.value() - dist;