aboutsummaryrefslogtreecommitdiffstats
path: root/src/controls
diff options
context:
space:
mode:
Diffstat (limited to 'src/controls')
-rw-r--r--src/controls/qquickstackview.cpp1
-rw-r--r--src/controls/qquickstackview_p.cpp8
-rw-r--r--src/controls/qquickstackview_p_p.h1
3 files changed, 8 insertions, 2 deletions
diff --git a/src/controls/qquickstackview.cpp b/src/controls/qquickstackview.cpp
index 39cca26c..1c09b6e8 100644
--- a/src/controls/qquickstackview.cpp
+++ b/src/controls/qquickstackview.cpp
@@ -269,6 +269,7 @@ QQuickStackView::~QQuickStackView()
d->transitioner->setChangeListener(Q_NULLPTR);
delete d->transitioner;
}
+ qDeleteAll(d->removals);
qDeleteAll(d->elements);
}
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)
diff --git a/src/controls/qquickstackview_p_p.h b/src/controls/qquickstackview_p_p.h
index 84ed9f35..7a185b7c 100644
--- a/src/controls/qquickstackview_p_p.h
+++ b/src/controls/qquickstackview_p_p.h
@@ -135,6 +135,7 @@ public:
QVariant initialItem;
QQuickItem *currentItem;
+ QList<QQuickStackElement*> removals;
QStack<QQuickStackElement *> elements;
QQuickItemViewTransitioner *transitioner;
};