diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-04-19 05:50:35 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-04-19 05:50:35 (GMT) |
commit | 1390f6f1208ca914ee801ff8be1352fc0b094f62 (patch) | |
tree | 543101ad0108844b2e28d20692bc2466778296b2 /src | |
parent | 2075925adaa1a1c78b6da9dc10d2b1a165178363 (diff) | |
download | Qt-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.cpp | 11 |
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; |