aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates/qquickstackview_p.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-10-29 15:50:39 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-11-02 15:23:50 +0000
commit497ac61380d4b6ebfef88923131f61d648857943 (patch)
tree90f8cb1c4de949ffacedac5c23427508814d1b3b /src/templates/qquickstackview_p.cpp
parent2ee0e8770bf43182aae7fd4420e7bd986ecdd68e (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.cpp32
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