aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-03-19 12:35:45 +0200
committerQt by Nokia <qt-info@nokia.com>2012-03-21 08:04:33 +0100
commit1312f4d1fefb3a7b5b8c7b720c45f542981250f3 (patch)
tree587ddb1363fcab7f954fe3af2c25b8ac2415a7e7 /src
parent80b5612708a115613c534644053eb0d8b2cda108 (diff)
Allow flick on press-move-release in Flickable.
Right now it needs at least a press-move-move-release to start a flick which is not ideal for touchscreens because a quick, short flick may result in reporting only a single move. Change-Id: I9bf2b4fea23b0eea9d9d00f0e79ce34f4d964bea Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickflickable.cpp46
1 files changed, 22 insertions, 24 deletions
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index f0eadc0daa..62d0e4aa41 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -887,11 +887,11 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
bool stealY = stealMouse;
bool stealX = stealMouse;
- qint64 elapsed = computeCurrentTime(event) - lastPressTime;
+ qint64 elapsedSincePress = computeCurrentTime(event) - lastPressTime;
if (q->yflick()) {
qreal dy = event->localPos().y() - pressPos.y();
- if (qAbs(dy) > qApp->styleHints()->startDragDistance() || elapsed > 200) {
+ if (qAbs(dy) > qApp->styleHints()->startDragDistance() || elapsedSincePress > 200) {
if (!vMoved)
vData.dragStartOffset = dy;
qreal newY = dy + vData.pressPos - vData.dragStartOffset;
@@ -924,7 +924,7 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
if (q->xflick()) {
qreal dx = event->localPos().x() - pressPos.x();
- if (qAbs(dx) > qApp->styleHints()->startDragDistance() || elapsed > 200) {
+ if (qAbs(dx) > qApp->styleHints()->startDragDistance() || elapsedSincePress > 200) {
if (!hMoved)
hData.dragStartOffset = dx;
qreal newX = dx + hData.pressPos - hData.dragStartOffset;
@@ -974,28 +974,26 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
q->movementStarting();
}
- if (!lastPos.isNull()) {
- qint64 currentTimestamp = computeCurrentTime(event);
- qreal elapsed = qreal(currentTimestamp - lastPosTime) / 1000.;
- if (elapsed <= 0)
- return;
- lastPosTime = currentTimestamp;
- QQuickMouseEventEx *extended = QQuickMouseEventEx::extended(event);
- if (q->yflick() && !rejectY) {
- if (extended && extended->capabilities().testFlag(QTouchDevice::Velocity)) {
- vData.addVelocitySample(extended->velocity().y(), maxVelocity);
- } else {
- qreal dy = event->localPos().y()-lastPos.y();
- vData.addVelocitySample(dy/elapsed, maxVelocity);
- }
+ qint64 currentTimestamp = computeCurrentTime(event);
+ qreal elapsed = qreal(currentTimestamp - (lastPos.isNull() ? lastPressTime : lastPosTime)) / 1000.;
+ if (elapsed <= 0)
+ return;
+ lastPosTime = currentTimestamp;
+ QQuickMouseEventEx *extended = QQuickMouseEventEx::extended(event);
+ if (q->yflick() && !rejectY) {
+ if (extended && extended->capabilities().testFlag(QTouchDevice::Velocity)) {
+ vData.addVelocitySample(extended->velocity().y(), maxVelocity);
+ } else {
+ qreal dy = event->localPos().y() - (lastPos.isNull() ? pressPos.y() : lastPos.y());
+ vData.addVelocitySample(dy/elapsed, maxVelocity);
}
- if (q->xflick() && !rejectX) {
- if (extended && extended->capabilities().testFlag(QTouchDevice::Velocity)) {
- hData.addVelocitySample(extended->velocity().x(), maxVelocity);
- } else {
- qreal dx = event->localPos().x()-lastPos.x();
- hData.addVelocitySample(dx/elapsed, maxVelocity);
- }
+ }
+ if (q->xflick() && !rejectX) {
+ if (extended && extended->capabilities().testFlag(QTouchDevice::Velocity)) {
+ hData.addVelocitySample(extended->velocity().x(), maxVelocity);
+ } else {
+ qreal dx = event->localPos().x() - (lastPos.isNull() ? pressPos.x() : lastPos.x());
+ hData.addVelocitySample(dx/elapsed, maxVelocity);
}
}