aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-07-26 13:07:17 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-07-26 11:48:50 +0000
commitb94889f49170e3d8df5b348d3f179445d892f232 (patch)
tree2ffedc1fbc8102741fc1535ffa99faaf8c110b93 /src
parentd6c8721476607f22896785baa547a7551015f164 (diff)
Fix QQuickStackViewPrivate::viewItemTransitionFinished()
~QQuickStackElement() emits QQuickStackViewAttached::removed(), which may be used to modify the stack. Set the status first and make a copy of the destroyable stack elements to exclude any modifications that may happen during the loop. Task-number: QTBUG-62153 Change-Id: I144acd693519e637b78f9a2d910e83da8f2d779e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/quicktemplates2/qquickstackview_p.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickstackview_p.cpp b/src/quicktemplates2/qquickstackview_p.cpp
index 3c983d6b..0b0f5ef5 100644
--- a/src/quicktemplates2/qquickstackview_p.cpp
+++ b/src/quicktemplates2/qquickstackview_p.cpp
@@ -278,9 +278,13 @@ void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransition
}
if (transitioner->runningJobs.isEmpty()) {
- qDeleteAll(removed);
- removed.clear();
+ // ~QQuickStackElement() emits QQuickStackViewAttached::removed(), which may be used
+ // to modify the stack. Set the status first and make a copy of the destroyable stack
+ // elements to exclude any modifications that may happen during the loop. (QTBUG-62153)
setBusy(false);
+ QList<QQuickStackElement*> elements = removed;
+ removed.clear();
+ qDeleteAll(elements);
}
removing.remove(element);