aboutsummaryrefslogtreecommitdiffstats
path: root/src/controls/qquickstackview_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/controls/qquickstackview_p.cpp')
-rw-r--r--src/controls/qquickstackview_p.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/controls/qquickstackview_p.cpp b/src/controls/qquickstackview_p.cpp
index 67cdde59..19ab6a39 100644
--- a/src/controls/qquickstackview_p.cpp
+++ b/src/controls/qquickstackview_p.cpp
@@ -389,6 +389,7 @@ void QQuickStackViewPrivate::ensureTransitioner()
void QQuickStackViewPrivate::popTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate)
{
if (exit) {
+ exit->removal = true;
exit->setStatus(QQuickStackView::Deactivating);
exit->transitionNextReposition(transitioner, QQuickItemViewTransitioner::RemoveTransition, true);
}
@@ -504,11 +505,14 @@ void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransition
if (element->item)
element->item->setVisible(false);
if (element->removal || element->isPendingRemoval())
- delete element;
+ removals += element;
}
- if (transitioner->runningJobs.isEmpty())
+ if (transitioner->runningJobs.isEmpty()) {
+ qDeleteAll(removals);
+ removals.clear();
setBusy(false);
+ }
}
void QQuickStackViewPrivate::setBusy(bool busy)