diff options
Diffstat (limited to 'dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch')
-rw-r--r-- | dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch new file mode 100644 index 000000000000..3e2bc70b5c2c --- /dev/null +++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch @@ -0,0 +1,84 @@ +https://bugreports.qt.io/browse/QTBUG-129622 +https://bugs.kde.org/show_bug.cgi?id=493854 +https://codereview.qt-project.org/c/qt/qtdeclarative/+/598853 +--- a/src/quick/items/qquickitemview.cpp ++++ b/src/quick/items/qquickitemview.cpp +@@ -2481,5 +2481,7 @@ + QQuickItemPrivate::get(item->item)->setCulled(true); + } +- if (!isClearing) ++ // If deleteLater was called, the item isn't long for this world and so we shouldn't store references to it. ++ // This can happen when a Repeater is used to populate items in SwipeView's ListView contentItem. ++ if (!isClearing && !QObjectPrivate::get(item->item)->deleteLaterCalled) + unrequestedItems.insert(item->item, model->indexOf(item->item, q)); + } else if (flags & QQmlInstanceModel::Destroyed) { +--- a/tests/auto/quickcontrols/controls/data/tst_swipeview.qml ++++ b/tests/auto/quickcontrols/controls/data/tst_swipeview.qml +@@ -5,4 +5,5 @@ + import QtTest + import QtQuick.Controls ++import QtQuick.Layouts + + TestCase { +@@ -761,3 +762,61 @@ + compare(item2.x, swipeListView.width) + } ++ ++ Component { ++ id: zeroSizeSwipeViewWithRepeatersComponent ++ ++ Item { ++ objectName: "rootItem" ++ anchors.fill: parent ++ ++ property alias swipeView: swipeView ++ property int d ++ ++ Timer { ++ interval: 2 ++ running: true ++ repeat: false ++ onTriggered: d = 2 ++ } ++ ++ SwipeView { ++ id: swipeView ++ contentItem.objectName: "swipeViewListView" ++ ++ Repeater { ++ objectName: "swipeViewContentItemRepeater" ++ model: [ ++ { ++ title: d ++ } ++ ] ++ ++ delegate: GridLayout { ++ objectName: "gridLayoutDelegate" ++ ++ Repeater { ++ id: repeater ++ objectName: "delegateRepeater" ++ model: d ++ delegate: Item { ++ objectName: "delegate" + index ++ ++ required property int index ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ // QTBUG-129622 ++ function test_zeroSizeSwipeViewWithRepeaters() { ++ let root = createTemporaryObject(zeroSizeSwipeViewWithRepeatersComponent, testCase) ++ verify(root) ++ ++ let swipeView = root.swipeView ++ tryCompare(root, "d", 2) ++ // Shouldn't crash when the model is changed. ++ } + } |