diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-04-19 05:57:39 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-04-19 05:57:39 (GMT) |
commit | f0f740fadaa4c368df5743502f445f9ce0de1247 (patch) | |
tree | 6489c7d3f7d7697f12a79fe05cb6711179dd26e5 /src | |
parent | 1390f6f1208ca914ee801ff8be1352fc0b094f62 (diff) | |
download | Qt-f0f740fadaa4c368df5743502f445f9ce0de1247.zip Qt-f0f740fadaa4c368df5743502f445f9ce0de1247.tar.gz Qt-f0f740fadaa4c368df5743502f445f9ce0de1247.tar.bz2 |
Avoid painfully slow flicking to snap positions in GridView
Task-number: QTBUG-9994
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativegridview.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 727dba3..23140fa 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -50,6 +50,7 @@ #include <qlistmodelinterface_p.h> #include <QKeyEvent> +#include <qmath.h> #include <math.h> QT_BEGIN_NAMESPACE @@ -834,7 +835,15 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m if (v > 0) dist = -dist; data.flickTarget = -snapPosAt(-(data.move.value() - highlightRangeStart) + dist) + highlightRangeStart; - 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 { data.flickTarget = velocity > 0 ? minExtent : maxExtent; |