aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2012-02-03 13:09:17 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-07 03:54:04 +0100
commit60a6f896906c3b03d75562519044fa81ee9c4bc1 (patch)
tree8b5125f2e6b881b6e4c76612f2b399803ed9b29b /src
parent201edf3a34c7a69f5ab905c286ab12b975cdc3da (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')
-rw-r--r--src/quick/items/qquickflickable.cpp21
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;
}