diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-10-29 15:50:39 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-11-02 15:23:50 +0000 |
commit | 497ac61380d4b6ebfef88923131f61d648857943 (patch) | |
tree | 90f8cb1c4de949ffacedac5c23427508814d1b3b /src/templates/qquickstackview_p.cpp | |
parent | 2ee0e8770bf43182aae7fd4420e7bd986ecdd68e (diff) |
Fix StackView::busy and child event filtering
1) renamed busy() to isBusy() to follow the Qt convention :)
2) fixed spurious busyChanged() emissions (it was always emitted on
push/replace/pop even when the state didn't change (null transitions)
3) with null transitions, the child event filter was never turned off
and therefore StackView "froze" after the first push/replace/pop
Change-Id: I07fffa73db5a182865c7b2779641e1f95ed8b30b
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/templates/qquickstackview_p.cpp')
-rw-r--r-- | src/templates/qquickstackview_p.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/templates/qquickstackview_p.cpp b/src/templates/qquickstackview_p.cpp index 9ee0bdb3..1a08d349 100644 --- a/src/templates/qquickstackview_p.cpp +++ b/src/templates/qquickstackview_p.cpp @@ -241,7 +241,7 @@ void QQuickStackElement::itemDestroyed(QQuickItem *) item = Q_NULLPTR; } -QQuickStackViewPrivate::QQuickStackViewPrivate() : currentItem(Q_NULLPTR), transitioner(Q_NULLPTR) +QQuickStackViewPrivate::QQuickStackViewPrivate() : busy(false), currentItem(Q_NULLPTR), transitioner(Q_NULLPTR) { } @@ -417,11 +417,10 @@ void QQuickStackViewPrivate::popTransition(QQuickStackElement *enter, QQuickStac enter->startTransition(transitioner); } - if (!immediate) - setBusy(true); - - if (transitioner) + if (transitioner) { + setBusy(!transitioner->runningJobs.isEmpty()); transitioner->resetTargetLists(); + } } void QQuickStackViewPrivate::pushTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate) @@ -450,11 +449,10 @@ void QQuickStackViewPrivate::pushTransition(QQuickStackElement *enter, QQuickSta exit->startTransition(transitioner); } - if (!immediate) - setBusy(true); - - if (transitioner) + if (transitioner) { + setBusy(!transitioner->runningJobs.isEmpty()); transitioner->resetTargetLists(); + } } void QQuickStackViewPrivate::replaceTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate) @@ -484,11 +482,10 @@ void QQuickStackViewPrivate::replaceTransition(QQuickStackElement *enter, QQuick enter->startTransition(transitioner); } - if (!immediate) - setBusy(true); - - if (transitioner) + if (transitioner) { + setBusy(!transitioner->runningJobs.isEmpty()); transitioner->resetTargetLists(); + } } void QQuickStackViewPrivate::completeTransition(QQuickStackElement *element, QQuickTransition *transition) @@ -525,11 +522,14 @@ void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransition } } -void QQuickStackViewPrivate::setBusy(bool busy) +void QQuickStackViewPrivate::setBusy(bool b) { Q_Q(QQuickStackView); - q->setFiltersChildMouseEvents(busy); - emit q->busyChanged(); + if (busy != b) { + busy = b; + q->setFiltersChildMouseEvents(busy); + emit q->busyChanged(); + } } QT_END_NAMESPACE |