diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-11-30 15:30:55 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-11-30 19:42:54 +0100 |
commit | 0118a2d6b6347a444fef2b80a170caa606b669d2 (patch) | |
tree | 9715f3635a42ef4014c457187e29790d34f679e7 | |
parent | 813fb3ad45001e64607064db3f5c358f88ea336d (diff) |
QQuickItemViewTransitionAttached: Avoid dangling pointers
The items referred to here can be deleted when the animation finishes.
Use QPointer to zero them in that case.
Pick-to: 5.15 6.2
Fixes: QTBUG-84196
Change-Id: I695c9e91bd29d0583e4871d03ee946c40aa8a595
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
-rw-r--r-- | src/quick/items/qquickitemviewtransition.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickitemviewtransition_p.h | 2 | ||||
-rw-r--r-- | tests/auto/quickcontrols2/translation/data/stackView.qml | 6 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/quick/items/qquickitemviewtransition.cpp b/src/quick/items/qquickitemviewtransition.cpp index eb0c1483ac..3c84468370 100644 --- a/src/quick/items/qquickitemviewtransition.cpp +++ b/src/quick/items/qquickitemviewtransition.cpp @@ -585,7 +585,7 @@ void QQuickItemViewTransitionableItem::stopTransition() QQuickViewTransitionAttached::QQuickViewTransitionAttached(QObject *parent) - : QObject(parent), m_item(nullptr), m_index(-1) + : QObject(parent), m_index(-1) { } /*! diff --git a/src/quick/items/qquickitemviewtransition_p.h b/src/quick/items/qquickitemviewtransition_p.h index a1f02b79db..253f3c6c70 100644 --- a/src/quick/items/qquickitemviewtransition_p.h +++ b/src/quick/items/qquickitemviewtransition_p.h @@ -226,7 +226,7 @@ private: QList<int> m_targetIndexes; QList<QObject *> m_targetItems; - QQuickItem *m_item; + QPointer<QQuickItem> m_item; int m_index; }; diff --git a/tests/auto/quickcontrols2/translation/data/stackView.qml b/tests/auto/quickcontrols2/translation/data/stackView.qml index 851b6e8017..55748d219a 100644 --- a/tests/auto/quickcontrols2/translation/data/stackView.qml +++ b/tests/auto/quickcontrols2/translation/data/stackView.qml @@ -83,6 +83,12 @@ Window { property int count: 0 onTriggered: { + + // This triggers the crash without retranslate(). + // retranslate() got cleverer in 6.2, sidestepping the issue. + replaceExit.animations[0].target = null; + replaceExit.animations[0].target = replaceExit.ViewTransition.item + console.log("timer within", root, "is about to call retranslate") window.engine.retranslate() window.calledTranslate() |