diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-01 10:49:04 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-08-01 10:49:04 +0200 |
commit | 6e70fa5ee8d0433dbb0d42378bce10db18b05fab (patch) | |
tree | 3030b30daa13790e1f5bdf540383fc7c06b849fc /src/quick/items/qquickflickable.cpp | |
parent | 77d6aef4063a9bf18074609fc32d3ffeed88617c (diff) | |
parent | 8b88e37bf79a53eb0cb34226aacb25ad9b01d7cf (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.cpp | 41 |
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(); } } |