diff options
author | Martin Jones <martin.jones@nokia.com> | 2012-02-03 13:09:17 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-07 03:54:04 +0100 |
commit | 60a6f896906c3b03d75562519044fa81ee9c4bc1 (patch) | |
tree | 8b5125f2e6b881b6e4c76612f2b399803ed9b29b /src/quick | |
parent | 201edf3a34c7a69f5ab905c286ab12b975cdc3da (diff) |
Ensure Flickable moving and flicking properties are correct.
Flicking, then touching to stop the flick should set flicking
property to false. Moving or flicking vertically should not
set flickingHorizontally, and vise-versa.
Change-Id: Iee42a92ffff2707f0691ffa285dec514b47c9986
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickflickable.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp index 621550057c..7d497fbbf0 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -303,14 +303,14 @@ void QQuickFlickablePrivate::flick(AxisData &data, qreal minExtent, qreal maxExt else timeline.accel(data.move, v, deceleration, maxDistance); timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this)); - if (!hData.flicking && q->xflick()) { + if (!hData.flicking && q->xflick() && (&data == &hData)) { hData.flicking = true; emit q->flickingChanged(); emit q->flickingHorizontallyChanged(); if (!vData.flicking) emit q->flickStarted(); } - if (!vData.flicking && q->yflick()) { + if (!vData.flicking && q->yflick() && (&data == &vData)) { vData.flicking = true; emit q->flickingChanged(); emit q->flickingVerticallyChanged(); @@ -855,8 +855,17 @@ void QQuickFlickablePrivate::handleMousePressEvent(QMouseEvent *event) pressPos = event->localPos(); hData.pressPos = hData.move.value(); vData.pressPos = vData.move.value(); - hData.flicking = false; - vData.flicking = false; + bool wasFlicking = hData.flicking || vData.flicking; + if (hData.flicking) { + hData.flicking = false; + emit q->flickingHorizontallyChanged(); + } + if (vData.flicking) { + vData.flicking = false; + emit q->flickingVerticallyChanged(); + } + if (wasFlicking) + emit q->flickingChanged(); lastPosTime = lastPressTime = computeCurrentTime(event); QQuickItemPrivate::start(velocityTime); } @@ -897,7 +906,7 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event) rejectY = false; } } - if (!rejectY && stealMouse) { + if (!rejectY && stealMouse && dy != 0.0) { vData.move.setValue(qRound(newY)); vMoved = true; } @@ -929,7 +938,7 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event) rejectX = false; } } - if (!rejectX && stealMouse) { + if (!rejectX && stealMouse && dx != 0.0) { hData.move.setValue(qRound(newX)); hMoved = true; } |