commit:     32b40fb3712c792bb39a2c68d1fb97bb1ee46fd7
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 25 07:03:09 2024 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Oct 25 07:12:18 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=32b40fb3

dev-qt/qtdeclarative: backport fix for QTBUG-129622

This should resolve the last (known) major blocker for
potentially stabilizing 6.7.3, likely in a few days if
nothing comes up.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../files/qtdeclarative-6.7.3-QTBUG-129622.patch   | 84 ++++++++++++++++++++++
 ...7.3-r3.ebuild => qtdeclarative-6.7.3-r4.ebuild} |  1 +
 ...8.0-r3.ebuild => qtdeclarative-6.8.0-r4.ebuild} |  1 +
 3 files changed, 86 insertions(+)

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.
++    }
+ }

diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild 
b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r4.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.7.3-r4.ebuild
index cc732b58ef89..a72aaa25a4e9 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r4.ebuild
@@ -37,6 +37,7 @@ BDEPEND="
 PATCHES=(
        "${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
        "${FILESDIR}"/${PN}-6.7.3-QTBUG-129165.patch
+       "${FILESDIR}"/${PN}-6.7.3-QTBUG-129622.patch
 )
 
 src_configure() {

diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild 
b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
index 77bfae60bd88..84d5899b33b6 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
@@ -36,6 +36,7 @@ BDEPEND="
 
 PATCHES=(
        "${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
+       "${FILESDIR}"/${PN}-6.7.3-QTBUG-129622.patch
        "${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
 )
 

Reply via email to