aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickflickable.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-08-01 10:49:04 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-08-01 10:49:04 +0200
commit6e70fa5ee8d0433dbb0d42378bce10db18b05fab (patch)
tree3030b30daa13790e1f5bdf540383fc7c06b849fc /src/quick/items/qquickflickable.cpp
parent77d6aef4063a9bf18074609fc32d3ffeed88617c (diff)
parent8b88e37bf79a53eb0cb34226aacb25ad9b01d7cf (diff)
Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev
Diffstat (limited to 'src/quick/items/qquickflickable.cpp')
-rw-r--r--src/quick/items/qquickflickable.cpp41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index 3f072359d2..ce2cedb7fc 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -763,15 +763,8 @@ void QQuickFlickable::setInteractive(bool interactive)
Q_D(QQuickFlickable);
if (interactive != d->interactive) {
d->interactive = interactive;
- if (!interactive && (d->hData.flicking || d->vData.flicking)) {
- d->clearTimeline();
- d->hData.vTime = d->vData.vTime = d->timeline.time();
- d->hData.flicking = false;
- d->vData.flicking = false;
- emit flickingChanged();
- emit flickingHorizontallyChanged();
- emit flickingVerticallyChanged();
- emit flickEnded();
+ if (!interactive) {
+ d->cancelInteraction();
}
emit interactiveChanged();
}
@@ -2015,18 +2008,24 @@ bool QQuickFlickable::yflick() const
void QQuickFlickable::mouseUngrabEvent()
{
Q_D(QQuickFlickable);
- if (d->pressed) {
- // if our mouse grab has been removed (probably by another Flickable),
- // fix our state
- d->clearDelayedPress();
- d->pressed = false;
- d->draggingEnding();
- d->stealMouse = false;
- setKeepMouseGrab(false);
- d->fixupX();
- d->fixupY();
- if (!d->isViewMoving())
- movementEnding();
+ // if our mouse grab has been removed (probably by another Flickable),
+ // fix our state
+ d->cancelInteraction();
+}
+
+void QQuickFlickablePrivate::cancelInteraction()
+{
+ Q_Q(QQuickFlickable);
+ if (pressed) {
+ clearDelayedPress();
+ pressed = false;
+ draggingEnding();
+ stealMouse = false;
+ q->setKeepMouseGrab(false);
+ fixupX();
+ fixupY();
+ if (!isViewMoving())
+ q->movementEnding();
}
}