diff --git a/.gitignore b/.gitignore index 41e8fc9..f4a80ab 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /qtdeclarative-everywhere-opensource-src-5.15.6.tar.xz /qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz /qtdeclarative-everywhere-opensource-src-5.15.8.tar.xz +/qtdeclarative-everywhere-opensource-src-5.15.9.tar.xz diff --git a/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch b/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch deleted file mode 100644 index ea064bc..0000000 --- a/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3f272e04492cd884deb4e7948e39b749809d5256 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid -Date: Fri, 21 May 2021 13:17:15 +0200 -Subject: [PATCH 01/21] Document that StyledText also supports   and - " - -Change-Id: I1715f8ae8ec8d0fbaf6dbe2b8663cc169da663cd -Reviewed-by: Fabian Kosmale -(cherry picked from commit 5848c081c094a66e024493fc1e5c2569e06f73b6) ---- - src/quick/items/qquicktext.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp -index 6230186933..c1571fc6f5 100644 ---- a/src/quick/items/qquicktext.cpp -+++ b/src/quick/items/qquicktext.cpp -@@ -2168,7 +2168,7 @@ void QQuickText::resetMaximumLineCount() - - inline images -
    ,
      and
    • - ordered and unordered lists -
       - preformatted
      --    > < &
      -+    > < & "  
      -     \endcode
      - 
      -     \c Text.StyledText parser is strict, requiring tags to be correctly nested.
      --- 
      -2.39.0
      -
      diff --git a/0003-Remove-unused-QPointer-QQuickPointerMask.patch b/0001-Remove-unused-QPointer-QQuickPointerMask.patch
      similarity index 88%
      rename from 0003-Remove-unused-QPointer-QQuickPointerMask.patch
      rename to 0001-Remove-unused-QPointer-QQuickPointerMask.patch
      index a10a96a..301b448 100644
      --- a/0003-Remove-unused-QPointer-QQuickPointerMask.patch
      +++ b/0001-Remove-unused-QPointer-QQuickPointerMask.patch
      @@ -1,7 +1,7 @@
      -From da206ac99b58218a1e51a2e75032647d24cd0fdb Mon Sep 17 00:00:00 2001
      +From adc1d82fbac1f85791977ff42299e1f84f0f8db4 Mon Sep 17 00:00:00 2001
       From: Albert Astals Cid 
       Date: Thu, 17 Jun 2021 16:32:28 +0200
      -Subject: [PATCH 03/21] Remove unused QPointer
      +Subject: [PATCH 01/19] Remove unused QPointer
       
       Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851
       Reviewed-by: Shawn Rutledge 
      @@ -31,5 +31,5 @@ index fba383e268..0d63618622 100644
            QPointF targetStartPos;
            QPointF lastPos;
       -- 
      -2.39.0
      +2.40.0
       
      diff --git a/0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch b/0002-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
      similarity index 97%
      rename from 0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
      rename to 0002-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
      index 3a90ba4..8ab7e15 100644
      --- a/0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
      +++ b/0002-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
      @@ -1,7 +1,7 @@
      -From e61200ff7222c31e73dbc779ba4a70073775cc0c Mon Sep 17 00:00:00 2001
      +From 3784ed7ea1ffe1f4be126b3425841aba44b369d8 Mon Sep 17 00:00:00 2001
       From: Aleix Pol 
       Date: Thu, 23 Sep 2021 03:43:04 +0200
      -Subject: [PATCH 04/21] QQmlDelegateModel: Refresh the view when a column is
      +Subject: [PATCH 02/19] QQmlDelegateModel: Refresh the view when a column is
        added at 0
       
       It can happen that a model reports n>0 rows but columns=0 (See
      @@ -22,7 +22,7 @@ Signed-off-by: Aleix Pol 
        create mode 100644 tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml
       
       diff --git a/src/qmlmodels/qqmldelegatemodel.cpp b/src/qmlmodels/qqmldelegatemodel.cpp
      -index 2079a8ed04..a577cb2351 100644
      +index 523c0df779..bc6b2447af 100644
       --- a/src/qmlmodels/qqmldelegatemodel.cpp
       +++ b/src/qmlmodels/qqmldelegatemodel.cpp
       @@ -389,6 +389,12 @@ void QQmlDelegateModelPrivate::connectToAbstractItemModel()
      @@ -51,7 +51,7 @@ index 2079a8ed04..a577cb2351 100644
            QObject::disconnect(aim, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector)),
                                q, SLOT(_q_dataChanged(QModelIndex,QModelIndex,QVector)));
            QObject::disconnect(aim, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
      -@@ -1973,6 +1985,38 @@ void QQmlDelegateModel::_q_rowsMoved(
      +@@ -1974,6 +1986,38 @@ void QQmlDelegateModel::_q_rowsMoved(
            }
        }
        
      @@ -174,5 +174,5 @@ index 35f1e2c94d..1722447830 100644
        
        #include "tst_qqmldelegatemodel.moc"
       -- 
      -2.39.0
      +2.40.0
       
      diff --git a/0002-Support-apos-in-styled-text.patch b/0002-Support-apos-in-styled-text.patch
      deleted file mode 100644
      index a43df9d..0000000
      --- a/0002-Support-apos-in-styled-text.patch
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -From bf4b4f3dfb3534e7919c50faa60a0fe7fbcdacf5 Mon Sep 17 00:00:00 2001
      -From: Albert Astals Cid 
      -Date: Fri, 21 May 2021 13:42:35 +0200
      -Subject: [PATCH 02/21] Support ' in styled text
      -
      -Pick-to: 6.1 5.15
      -Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929
      -Reviewed-by: Fabian Kosmale 
      -Reviewed-by: Eskil Abrahamsen Blomfeldt 
      -(cherry picked from commit 96b528efcba1226d2980828d1255160bdceae4cf)
      ----
      - src/quick/items/qquicktext.cpp      | 2 +-
      - src/quick/util/qquickstyledtext.cpp | 2 ++
      - 2 files changed, 3 insertions(+), 1 deletion(-)
      -
      -diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
      -index c1571fc6f5..e823ca1095 100644
      ---- a/src/quick/items/qquicktext.cpp
      -+++ b/src/quick/items/qquicktext.cpp
      -@@ -2168,7 +2168,7 @@ void QQuickText::resetMaximumLineCount()
      -      - inline images
      -     
        ,
          and
        • - ordered and unordered lists -
           - preformatted
          --    > < & "  
          -+    > < & "   '
          -     \endcode
          - 
          -     \c Text.StyledText parser is strict, requiring tags to be correctly nested.
          -diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp
          -index d531fc9205..a25af90414 100644
          ---- a/src/quick/util/qquickstyledtext.cpp
          -+++ b/src/quick/util/qquickstyledtext.cpp
          -@@ -564,6 +564,8 @@ void QQuickStyledTextPrivate::parseEntity(const QChar *&ch, const QString &textI
          -                 textOut += QChar(60);
          -             else if (entity == QLatin1String("amp"))
          -                 textOut += QChar(38);
          -+            else if (entity == QLatin1String("apos"))
          -+                textOut += QChar(39);
          -             else if (entity == QLatin1String("quot"))
          -                 textOut += QChar(34);
          -             else if (entity == QLatin1String("nbsp"))
          --- 
          -2.39.0
          -
          diff --git a/0006-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch b/0003-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          similarity index 95%
          rename from 0006-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          rename to 0003-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          index c49f6d2..95e767d 100644
          --- a/0006-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          +++ b/0003-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          @@ -1,7 +1,7 @@
          -From b8f474a4dd5fa58edfba73e565499bcdad679291 Mon Sep 17 00:00:00 2001
          +From 18b10527cc14a42a19b5d088845bfd2e96326bbb Mon Sep 17 00:00:00 2001
           From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= 
           Date: Thu, 3 Sep 2020 10:51:01 +0200
          -Subject: [PATCH 06/21] Fix TapHandler so that it actually registers a tap
          +Subject: [PATCH 03/19] Fix TapHandler so that it actually registers a tap
           
           This bug caused all quick examples that used the
           shared\LauncherList.qml to be broken.
          @@ -69,5 +69,5 @@ index b51f53b74f..89081b4e84 100644
            
            void QQuickSinglePointHandler::handlePointerEventImpl(QQuickPointerEvent *event)
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0007-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch b/0004-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          similarity index 94%
          rename from 0007-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          rename to 0004-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          index 413e137..376c97b 100644
          --- a/0007-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          +++ b/0004-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          @@ -1,7 +1,7 @@
          -From de04cfb654a09fe7d0f8454b8a8de9243284e1d2 Mon Sep 17 00:00:00 2001
          +From 2842ffc4e6bc4f6a7578866fbbe58c8ceb1efb16 Mon Sep 17 00:00:00 2001
           From: Albert Astals Cid 
           Date: Tue, 16 Nov 2021 22:43:37 +0100
          -Subject: [PATCH 07/21] Revert "Fix TapHandler so that it actually registers a
          +Subject: [PATCH 04/19] Revert "Fix TapHandler so that it actually registers a
            tap"
           
           This reverts commit 36e8ccd434f948e4f11a8f9d59139ec072e41ff5.
          @@ -57,5 +57,5 @@ index 89081b4e84..b51f53b74f 100644
            
            void QQuickSinglePointHandler::handlePointerEventImpl(QQuickPointerEvent *event)
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch b/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch
          deleted file mode 100644
          index cfd0400..0000000
          --- a/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch
          +++ /dev/null
          @@ -1,119 +0,0 @@
          -From ab781c9f5364ddfab0bfe9626a9dd01bd6bc046e Mon Sep 17 00:00:00 2001
          -From: Vlad Zahorodnii 
          -Date: Sun, 10 Oct 2021 21:04:21 +0300
          -Subject: [PATCH 05/21] Fix sweep step for tainted QObject JavaScript wrappers
          -
          -Currently, whenever the garbage collector runs, it will destroy all
          -valid tainted wrappers.
          -
          -Only null or undefined wrappers will be preserved in the
          -m_multiplyWrappedQObjects map.
          -
          -It seems like "!" was overlooked in
          -3b5d37ce3841c4bfdf1c629d33f0e33b881b47fb. Prior to that change, it
          -was "!it.value()->markBit()", so calling erase() in the then branch
          -did make sense. But with "!it.value().isNullOrUndefined()", erase()
          -will be called for every valid wrapper, which is the opposite what we
          -want.
          -
          -Pick-to: 5.15 6.2
          -Change-Id: I2bf2630f538af8cbd4bfffcff29d67be6c278265
          -Reviewed-by: Fabian Kosmale 
          -(cherry picked from commit e6b2f88d892dcf396580a61662f569bf69d6d9d1)
          ----
          - src/qml/memory/qv4mm.cpp                   |  2 +-
          - tests/auto/qml/qjsengine/tst_qjsengine.cpp | 39 ++++++++++++++++++++++
          - tests/auto/qml/qv4mm/tst_qv4mm.cpp         |  6 ++--
          - 3 files changed, 43 insertions(+), 4 deletions(-)
          -
          -diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp
          -index 06caf04e5a..da149a67c4 100644
          ---- a/src/qml/memory/qv4mm.cpp
          -+++ b/src/qml/memory/qv4mm.cpp
          -@@ -981,7 +981,7 @@ void MemoryManager::sweep(bool lastSweep, ClassDestroyStatsCallback classCountPt
          - 
          -     if (MultiplyWrappedQObjectMap *multiplyWrappedQObjects = engine->m_multiplyWrappedQObjects) {
          -         for (MultiplyWrappedQObjectMap::Iterator it = multiplyWrappedQObjects->begin(); it != multiplyWrappedQObjects->end();) {
          --            if (!it.value().isNullOrUndefined())
          -+            if (it.value().isNullOrUndefined())
          -                 it = multiplyWrappedQObjects->erase(it);
          -             else
          -                 ++it;
          -diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
          -index 3b7d74df63..b75bf820d5 100644
          ---- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
          -+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
          -@@ -102,6 +102,7 @@ private slots:
          -     void valueConversion_RegularExpression();
          -     void castWithMultipleInheritance();
          -     void collectGarbage();
          -+    void collectGarbageNestedWrappersTwoEngines();
          -     void gcWithNestedDataStructure();
          -     void stacktrace();
          -     void numberParsing_data();
          -@@ -1809,6 +1810,44 @@ void tst_QJSEngine::collectGarbage()
          -     QVERIFY(ptr.isNull());
          - }
          - 
          -+class TestObjectContainer : public QObject
          -+{
          -+    Q_OBJECT
          -+    Q_PROPERTY(QObject *dummy MEMBER m_dummy CONSTANT)
          -+
          -+public:
          -+    TestObjectContainer() : m_dummy(new QObject(this)) {}
          -+
          -+private:
          -+    QObject *m_dummy;
          -+};
          -+
          -+void tst_QJSEngine::collectGarbageNestedWrappersTwoEngines()
          -+{
          -+    QJSEngine engine1;
          -+    QJSEngine engine2;
          -+
          -+    TestObjectContainer container;
          -+    QQmlEngine::setObjectOwnership(&container, QQmlEngine::CppOwnership);
          -+
          -+    engine1.globalObject().setProperty("foobar", engine1.newQObject(&container));
          -+    engine2.globalObject().setProperty("foobar", engine2.newQObject(&container));
          -+
          -+    engine1.evaluate("foobar.dummy.baz = 42");
          -+    engine2.evaluate("foobar.dummy.baz = 43");
          -+
          -+    QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42);
          -+    QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43);
          -+
          -+    engine1.collectGarbage();
          -+    engine2.collectGarbage();
          -+
          -+    // The GC should not collect dummy object wrappers neither in engine1 nor engine2, we
          -+    // verify that by checking whether the baz property still has its previous value.
          -+    QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42);
          -+    QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43);
          -+}
          -+
          - void tst_QJSEngine::gcWithNestedDataStructure()
          - {
          -     // The GC must be able to traverse deeply nested objects, otherwise this
          -diff --git a/tests/auto/qml/qv4mm/tst_qv4mm.cpp b/tests/auto/qml/qv4mm/tst_qv4mm.cpp
          -index 5d635aa63b..824fd89e5b 100644
          ---- a/tests/auto/qml/qv4mm/tst_qv4mm.cpp
          -+++ b/tests/auto/qml/qv4mm/tst_qv4mm.cpp
          -@@ -76,10 +76,10 @@ void tst_qv4mm::multiWrappedQObjects()
          -         QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1);
          -         QCOMPARE(engine2.memoryManager->m_pendingFreedObjectWrapperValue.size(), 0);
          - 
          --        // Moves the additional WeakValue from m_multiplyWrappedQObjects to
          --        // m_pendingFreedObjectWrapperValue. It's still alive after all.
          -+        // The additional WeakValue from m_multiplyWrappedQObjects hasn't been moved
          -+        // to m_pendingFreedObjectWrapperValue yet. It's still alive after all.
          -         engine1.memoryManager->runGC();
          --        QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 2);
          -+        QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1);
          - 
          -         // engine2 doesn't own the object as engine1 was the first to wrap it above.
          -         // Therefore, no effect here.
          --- 
          -2.39.0
          -
          diff --git a/0010-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch b/0005-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          similarity index 95%
          rename from 0010-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          rename to 0005-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          index 1b2fb96..e2f6dee 100644
          --- a/0010-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          +++ b/0005-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          @@ -1,7 +1,7 @@
          -From d8808a609a81660e9de9abc6b1b71ea01f0d6f40 Mon Sep 17 00:00:00 2001
          +From 2d50aedb262fd387775575f684eb9e2485d84134 Mon Sep 17 00:00:00 2001
           From: Vlad Zahorodnii 
           Date: Sat, 29 Jan 2022 21:59:33 +0200
          -Subject: [PATCH 10/21] Make sure QQuickWidget and its offscreen window's
          +Subject: [PATCH 05/19] Make sure QQuickWidget and its offscreen window's
            screens are always in sync
           
           By default, the offscreen window is placed on the primary screen.
          @@ -80,5 +80,5 @@ index 39780f8de3..223d91f579 100644
                case QEvent::Move:
                    d->updatePosition();
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0011-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch b/0006-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          similarity index 96%
          rename from 0011-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          rename to 0006-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          index 50b960f..49e4432 100644
          --- a/0011-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          +++ b/0006-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          @@ -1,7 +1,7 @@
          -From 052dba54ae335b42fdcd1c0c68c9fce0031ffe9e Mon Sep 17 00:00:00 2001
          +From 9a3d7bc6cf8eea575e597ff1af03d87f7fbdc9aa Mon Sep 17 00:00:00 2001
           From: Fabian Kosmale 
           Date: Wed, 4 May 2022 09:10:54 +0200
          -Subject: [PATCH 11/21] QQuickItem: Guard against cycles in
          +Subject: [PATCH 06/19] QQuickItem: Guard against cycles in
            nextPrevItemInTabFocusChain
           MIME-Version: 1.0
           Content-Type: text/plain; charset=UTF-8
          @@ -37,7 +37,7 @@ Reviewed-by: Volker Hilsheimer 
            create mode 100644 tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml
           
           diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
          -index 75f1457816..9de244ed9e 100644
          +index 33da9762d3..ec55fb2998 100644
           --- a/src/quick/items/qquickitem.cpp
           +++ b/src/quick/items/qquickitem.cpp
           @@ -59,6 +59,7 @@
          @@ -118,5 +118,5 @@ index c8f251dbe1..c8ef36ee68 100644
            {
                if (!qt_tab_all_widgets())
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0015-Don-t-convert-QByteArray-in-startDrag.patch b/0007-Don-t-convert-QByteArray-in-startDrag.patch
          similarity index 94%
          rename from 0015-Don-t-convert-QByteArray-in-startDrag.patch
          rename to 0007-Don-t-convert-QByteArray-in-startDrag.patch
          index ee0d6f4..007bd7a 100644
          --- a/0015-Don-t-convert-QByteArray-in-startDrag.patch
          +++ b/0007-Don-t-convert-QByteArray-in-startDrag.patch
          @@ -1,7 +1,7 @@
          -From 4884d7f5a3dbfddd865b594db51eeb4272565f76 Mon Sep 17 00:00:00 2001
          +From c257eb6a0eeb159c670c9cf6b37d3009ec8879e5 Mon Sep 17 00:00:00 2001
           From: Fushan Wen 
           Date: Tue, 1 Nov 2022 22:35:24 +0800
          -Subject: [PATCH 15/21] Don't convert QByteArray in `startDrag`
          +Subject: [PATCH 07/19] Don't convert QByteArray in `startDrag`
           
           QMimeData::setData expects the provided data to contain the correctly
           encoded QByteArray, so if the variant contains a QByteArray, then take
          @@ -56,5 +56,5 @@ index 8321fcfeed..3b50370355 100644
                drag->setMimeData(mimeData);
                if (pixmapLoader.isReady()) {
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0016-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch b/0008-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          similarity index 89%
          rename from 0016-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          rename to 0008-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          index 658343b..947b3c4 100644
          --- a/0016-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          +++ b/0008-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          @@ -1,7 +1,7 @@
          -From 2574ff9d5c6e72d01dca283e66436cd90a64324d Mon Sep 17 00:00:00 2001
          +From cbb5f2d37a07b75f9d340fd1e1f34a6d1e078eba Mon Sep 17 00:00:00 2001
           From: Hannah von Reth 
           Date: Sat, 5 Nov 2022 18:48:41 +0100
          -Subject: [PATCH 16/21] Fix build after
          +Subject: [PATCH 08/19] Fix build after
            95290f66b806a307b8da1f72f8fc2c69801933d0
           
           ---
          @@ -22,5 +22,5 @@ index 3b50370355..383078b3b9 100644
                    else
                        mimeData->setData(it.key(), it.value().toString().toUtf8());
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0008-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch b/0008-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch
          deleted file mode 100644
          index 568f207..0000000
          --- a/0008-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch
          +++ /dev/null
          @@ -1,36 +0,0 @@
          -From 99ada3c3d329b6d7136b0425841dcaa654c9c05b Mon Sep 17 00:00:00 2001
          -From: Marc Mutz 
          -Date: Tue, 21 Dec 2021 09:20:17 +0100
          -Subject: [PATCH 08/21] QQmlJs::FixedPoolArray: fix UB (precondition violation)
          - in allocate()
          -
          -Says ubsan:
          -
          -  qqmljsfixedpoolarray_p.h:90:19: runtime error: null pointer passed as argument 2, which is declared to never be null
          -
          -Fix, like in so many other places, by a size check.
          -
          -Pick-to: 6.3 6.2 5.15
          -Change-Id: I9181d6ecb467c2dc726978ce7f93b35a6bf2f944
          -Reviewed-by: Lars Knoll 
          -(cherry picked from commit d74e931f3fc2587ac6d1e2930acbbe54ea5be2b5)
          ----
          - src/qml/common/qqmljsfixedpoolarray_p.h | 2 +-
          - 1 file changed, 1 insertion(+), 1 deletion(-)
          -
          -diff --git a/src/qml/common/qqmljsfixedpoolarray_p.h b/src/qml/common/qqmljsfixedpoolarray_p.h
          -index b65b994d6c..15a8cd6878 100644
          ---- a/src/qml/common/qqmljsfixedpoolarray_p.h
          -+++ b/src/qml/common/qqmljsfixedpoolarray_p.h
          -@@ -86,7 +86,7 @@ public:
          -         if (QTypeInfo::isComplex) {
          -             for (int i = 0; i < count; ++i)
          -                 new (data + i) T(vector.at(i));
          --        } else {
          -+        } else if (count) {
          -             memcpy(data, static_cast(vector.constData()), count * sizeof(T));
          -         }
          -     }
          --- 
          -2.39.0
          -
          diff --git a/0017-Implement-accessibility-for-QQuickWidget.patch b/0009-Implement-accessibility-for-QQuickWidget.patch
          similarity index 98%
          rename from 0017-Implement-accessibility-for-QQuickWidget.patch
          rename to 0009-Implement-accessibility-for-QQuickWidget.patch
          index 3749a8e..fc52c8d 100644
          --- a/0017-Implement-accessibility-for-QQuickWidget.patch
          +++ b/0009-Implement-accessibility-for-QQuickWidget.patch
          @@ -1,7 +1,7 @@
          -From 6d1dd8925f160d6ad02ea646eac638675bdf9f1c Mon Sep 17 00:00:00 2001
          +From 3f7ac5540c8796ec2bb2b595ca6648035a0f8b18 Mon Sep 17 00:00:00 2001
           From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= 
           Date: Fri, 7 May 2021 10:07:50 +0200
          -Subject: [PATCH 17/21] Implement accessibility for QQuickWidget
          +Subject: [PATCH 09/19] Implement accessibility for QQuickWidget
           MIME-Version: 1.0
           Content-Type: text/plain; charset=UTF-8
           Content-Transfer-Encoding: 8bit
          @@ -46,7 +46,7 @@ Reviewed-by: Volker Hilsheimer 
            create mode 100644 src/quickwidgets/qaccessiblequickwidgetfactory_p.h
           
           diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp
          -index 85719fdc80..eb3df4d4cd 100644
          +index ae1954ae8d..0692ce634d 100644
           --- a/src/quick/accessible/qaccessiblequickitem.cpp
           +++ b/src/quick/accessible/qaccessiblequickitem.cpp
           @@ -46,6 +46,7 @@
          @@ -102,7 +102,7 @@ index 85719fdc80..eb3df4d4cd 100644
                    } else {
                        while (parent && !parent->d_func()->isAccessible)
                            parent = parent->parentItem();
          -@@ -188,7 +197,7 @@ QAccessible::State QAccessibleQuickItem::state() const
          +@@ -193,7 +202,7 @@ QAccessible::State QAccessibleQuickItem::state() const
                QRect viewRect_ = viewRect();
                QRect itemRect = rect();
            
          @@ -561,5 +561,5 @@ index 2438e577ae..f46deb54ac 100644
            
            load(qt_module)
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0009-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch b/0009-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch
          deleted file mode 100644
          index e87e423..0000000
          --- a/0009-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch
          +++ /dev/null
          @@ -1,51 +0,0 @@
          -From b964ba12bf118afbbf42cd9e4e7b4903ad107060 Mon Sep 17 00:00:00 2001
          -From: Ulf Hermann 
          -Date: Thu, 3 Feb 2022 10:02:06 +0100
          -Subject: [PATCH 09/21] V4: Do not call dtor of an object we continue to use
          -
          -After destroyObject(), the QObjectWrapper is still alive. We might use
          -its heap object again. Furthermore, the Heap::QObjectWrapper dtor does
          -not actually do anything defined. What we want to do here is clear the
          -QObject pointer because we've just gotten rid of the QObject. There is a
          -method for that: Heap::QObjectWrapper::destroy().
          -
          -Finally, the internalClass must never ever be nullptr. Assert on that
          -rather than checking it.
          -
          -Pick-to: 5.15 6.2 6.3
          -Task-number: QTBUG-100431
          -Change-Id: I794a295c182b2ed4ba80673f58d6143c861b7391
          -Reviewed-by: Andrei Golubev 
          -Reviewed-by: Qt CI Bot 
          -Reviewed-by: Fabian Kosmale 
          -(cherry picked from commit 6c197319f34b8098d034f1543eb5feb9d7be54c3)
          ----
          - src/qml/jsruntime/qv4qobjectwrapper.cpp | 5 ++---
          - 1 file changed, 2 insertions(+), 3 deletions(-)
          -
          -diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp
          -index e57cdd8278..94613598af 100644
          ---- a/src/qml/jsruntime/qv4qobjectwrapper.cpp
          -+++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp
          -@@ -1145,8 +1145,7 @@ void Heap::QObjectWrapper::markObjects(Heap::Base *that, QV4::MarkStack *markSta
          - void QObjectWrapper::destroyObject(bool lastCall)
          - {
          -     Heap::QObjectWrapper *h = d();
          --    if (!h->internalClass)
          --        return; // destroyObject already got called
          -+    Q_ASSERT(h->internalClass);
          - 
          -     if (h->object()) {
          -         QQmlData *ddata = QQmlData::get(h->object(), false);
          -@@ -1176,7 +1175,7 @@ void QObjectWrapper::destroyObject(bool lastCall)
          -         }
          -     }
          - 
          --    h->~Data();
          -+    h->destroy();
          - }
          - 
          - 
          --- 
          -2.39.0
          -
          diff --git a/0018-Send-ObjectShow-event-for-visible-components-after-i.patch b/0010-Send-ObjectShow-event-for-visible-components-after-i.patch
          similarity index 89%
          rename from 0018-Send-ObjectShow-event-for-visible-components-after-i.patch
          rename to 0010-Send-ObjectShow-event-for-visible-components-after-i.patch
          index 0709431..1537cb3 100644
          --- a/0018-Send-ObjectShow-event-for-visible-components-after-i.patch
          +++ b/0010-Send-ObjectShow-event-for-visible-components-after-i.patch
          @@ -1,7 +1,7 @@
          -From 99c990d55802c1ea782ca609ccd2bcdf39fb786f Mon Sep 17 00:00:00 2001
          +From bdb3af04019b9134d6e815f4fe54317db63d0152 Mon Sep 17 00:00:00 2001
           From: Fushan Wen 
           Date: Sat, 5 Nov 2022 01:44:30 +0800
          -Subject: [PATCH 18/21] Send ObjectShow event for visible components after
          +Subject: [PATCH 10/19] Send ObjectShow event for visible components after
            initialized
           MIME-Version: 1.0
           Content-Type: text/plain; charset=UTF-8
          @@ -24,7 +24,7 @@ Reviewed-by: Jan Arve Sæther 
            1 file changed, 7 insertions(+)
           
           diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
          -index 9de244ed9e..462147adbd 100644
          +index ec55fb2998..499fb61d1b 100644
           --- a/src/quick/items/qquickitem.cpp
           +++ b/src/quick/items/qquickitem.cpp
           @@ -5125,6 +5125,13 @@ void QQuickItem::componentComplete()
          @@ -42,5 +42,5 @@ index 9de244ed9e..462147adbd 100644
            
            QQuickStateGroup *QQuickItemPrivate::_states()
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0019-QQuickItem-avoid-emitting-signals-during-destruction.patch b/0011-QQuickItem-avoid-emitting-signals-during-destruction.patch
          similarity index 95%
          rename from 0019-QQuickItem-avoid-emitting-signals-during-destruction.patch
          rename to 0011-QQuickItem-avoid-emitting-signals-during-destruction.patch
          index 00e9eaa..059c4bb 100644
          --- a/0019-QQuickItem-avoid-emitting-signals-during-destruction.patch
          +++ b/0011-QQuickItem-avoid-emitting-signals-during-destruction.patch
          @@ -1,7 +1,7 @@
          -From b91f07532b02f68161ec525bd44501d91ad19b38 Mon Sep 17 00:00:00 2001
          +From 19afcf36b92dc36e83b613e4b9ee383f6beb02dc Mon Sep 17 00:00:00 2001
           From: Volker Hilsheimer 
           Date: Wed, 9 Nov 2022 15:34:11 +0100
          -Subject: [PATCH 19/21] QQuickItem: avoid emitting signals during destruction
          +Subject: [PATCH 11/19] QQuickItem: avoid emitting signals during destruction
           
           If a QQuickItem is in the QQuickItem destructor, then it is both unsafe
           and unnecessary to emit property change notifications. Connected code
          @@ -29,7 +29,7 @@ Reviewed-by: Mitch Curtis 
            2 files changed, 14 insertions(+), 8 deletions(-)
           
           diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
          -index 462147adbd..4cf73ff73d 100644
          +index 499fb61d1b..5ee2a440a3 100644
           --- a/src/quick/items/qquickitem.cpp
           +++ b/src/quick/items/qquickitem.cpp
           @@ -2327,6 +2327,7 @@ QQuickItem::QQuickItem(QQuickItemPrivate &dd, QQuickItem *parent)
          @@ -109,5 +109,5 @@ index 841d91bb40..ade8fb61f2 100644
                enum DirtyType {
                    TransformOrigin         = 0x00000001,
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0012-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch b/0012-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch
          deleted file mode 100644
          index 37a1ed4..0000000
          --- a/0012-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch
          +++ /dev/null
          @@ -1,43 +0,0 @@
          -From f9faa4cfa0dbbac12cdf79e56a02b9aa0022018c Mon Sep 17 00:00:00 2001
          -From: Marc Mutz 
          -Date: Tue, 16 Jul 2019 11:23:37 +0200
          -Subject: [PATCH 12/21] QSGOpenGLDistanceFieldGlyphCache: fix multiplication
          - result truncation
          -
          -The type of the expression int * int is int, so truncation has already
          -happened when the result is assigned to a qint64.
          -
          -Fix by casting one of the multiplicants to qint64 before performing
          -the multiplication. This multiplication cannot overflow, because int
          -is 32-bit on all supported platforms.
          -
          -The addition of 'size' to the pointer will still truncate the result,
          -on 32bit platforms, but that check is in itself UB. A follow-up commit
          -will fix the check, and with it the last truncation to 32bit.
          -
          -Coverity-Id: 218769
          -Pick-to: 6.3 6.2 5.15
          -Change-Id: I0d71950695b9743db8c96d825e68bb1e9c47de02
          -Reviewed-by: Fabian Kosmale 
          -Reviewed-by: Thiago Macieira 
          -(cherry picked from commit cacfc1dbb9719c0ef55cff69dad0921ce1405438)
          ----
          - src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp | 2 +-
          - 1 file changed, 1 insertion(+), 1 deletion(-)
          -
          -diff --git a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
          -index eb4db0f85e..2c9868b335 100644
          ---- a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
          -+++ b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
          -@@ -512,7 +512,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
          - 
          -             int width = texInfo->allocatedArea.width();
          -             int height = texInfo->allocatedArea.height();
          --            qint64 size = width * height;
          -+            qint64 size = qint64(width) * height;
          -             if (reinterpret_cast(textureData + size) > qtdfTableEnd) {
          -                 qWarning("qtdf table too small in font '%s'.",
          -                          qPrintable(font.familyName()));
          --- 
          -2.39.0
          -
          diff --git a/0020-a11y-track-item-enabled-state.patch b/0012-a11y-track-item-enabled-state.patch
          similarity index 87%
          rename from 0020-a11y-track-item-enabled-state.patch
          rename to 0012-a11y-track-item-enabled-state.patch
          index 817fdc5..3778eee 100644
          --- a/0020-a11y-track-item-enabled-state.patch
          +++ b/0012-a11y-track-item-enabled-state.patch
          @@ -1,7 +1,7 @@
          -From 1fb12800a8907680b821a8e8e29c5b428cbb64b6 Mon Sep 17 00:00:00 2001
          +From 5ed173f4ba070bca6c9ec3335b84cc322885b01d Mon Sep 17 00:00:00 2001
           From: Harald Sitter 
           Date: Mon, 28 Nov 2022 14:59:33 +0100
          -Subject: [PATCH 20/21] a11y: track item enabled state
          +Subject: [PATCH 12/19] a11y: track item enabled state
           MIME-Version: 1.0
           Content-Type: text/plain; charset=UTF-8
           Content-Transfer-Encoding: 8bit
          @@ -18,10 +18,10 @@ Reviewed-by: Jan Arve Sæther 
            2 files changed, 13 insertions(+)
           
           diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp
          -index eb3df4d4cd..78e2ab302c 100644
          +index 0692ce634d..a8df58d450 100644
           --- a/src/quick/accessible/qaccessiblequickitem.cpp
           +++ b/src/quick/accessible/qaccessiblequickitem.cpp
          -@@ -210,6 +210,10 @@ QAccessible::State QAccessibleQuickItem::state() const
          +@@ -215,6 +215,10 @@ QAccessible::State QAccessibleQuickItem::state() const
                if (role() == QAccessible::EditableText)
                    if (auto ti = qobject_cast(item()))
                        state.passwordEdit = ti->echoMode() != QQuickTextInput::Normal;
          @@ -33,7 +33,7 @@ index eb3df4d4cd..78e2ab302c 100644
            }
            
           diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
          -index 4cf73ff73d..dec0ae19ae 100644
          +index 5ee2a440a3..c370d6e5c3 100644
           --- a/src/quick/items/qquickitem.cpp
           +++ b/src/quick/items/qquickitem.cpp
           @@ -6174,6 +6174,15 @@ void QQuickItemPrivate::setEffectiveEnableRecur(QQuickItem *scope, bool newEffec
          @@ -53,5 +53,5 @@ index 4cf73ff73d..dec0ae19ae 100644
            }
            
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0021-Make-QaccessibleQuickWidget-private-API.patch b/0013-Make-QaccessibleQuickWidget-private-API.patch
          similarity index 95%
          rename from 0021-Make-QaccessibleQuickWidget-private-API.patch
          rename to 0013-Make-QaccessibleQuickWidget-private-API.patch
          index 2054f05..1b9fa28 100644
          --- a/0021-Make-QaccessibleQuickWidget-private-API.patch
          +++ b/0013-Make-QaccessibleQuickWidget-private-API.patch
          @@ -1,7 +1,7 @@
          -From 8defe7bfcae2ac5cb6dc25bfe3678124b09cf6f9 Mon Sep 17 00:00:00 2001
          +From a8fa6c930597b633367777044f4c0328012f6bd5 Mon Sep 17 00:00:00 2001
           From: Fabian Kosmale 
           Date: Tue, 1 Jun 2021 16:40:44 +0200
          -Subject: [PATCH 21/21] Make QaccessibleQuickWidget private API
          +Subject: [PATCH 13/19] Make QaccessibleQuickWidget private API
           
           Its base class is private API, so it should be private API, too.
           
          @@ -83,5 +83,5 @@ index f46deb54ac..85d156b8a3 100644
            
            SOURCES += \
           -- 
          -2.39.0
          +2.40.0
           
          diff --git a/0013-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch b/0013-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch
          deleted file mode 100644
          index c66c1ac..0000000
          --- a/0013-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch
          +++ /dev/null
          @@ -1,68 +0,0 @@
          -From 6d844f0250d97acdf66fd0d9cdabd26588e72333 Mon Sep 17 00:00:00 2001
          -From: Marc Mutz 
          -Date: Tue, 16 Jul 2019 11:31:01 +0200
          -Subject: [PATCH 13/21] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of
          - pointers not from the same array)
          -
          -The code performed out of bounds checks by adding the size of the
          -buffer to a pointer and comparing the result to the the
          -one-past-the-end pointer of the buffer.
          -
          -This is UB, for three reasons:
          -
          -- in one case, a qint64 is added to a pointer, silently truncating the
          -  result on 32bit platforms
          -
          -- if the buffer overflow is large, the pointer value may wrap around,
          -  yielding a result that is numerically less than the end pointer, but
          -  still out-of-bounds.
          -
          -- pointer order is only defined within a C array, plus one past the
          -  end. On failure, pointers outside that range are compared.
          -
          -Fix by comparing distance(it, end) with the required size for the
          -chunk to be written instead.
          -
          -Pick-to: 6.3 6.2 5.15
          -Change-Id: I356bb8c8a65a93b8b1c1eb7bac381dd64bea719e
          -Reviewed-by: Fabian Kosmale 
          -Reviewed-by: Thiago Macieira 
          -(cherry picked from commit 8d9bd6b381bfc759d575954801b683354ad6a790)
          ----
          - src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp | 6 +++---
          - 1 file changed, 3 insertions(+), 3 deletions(-)
          -
          -diff --git a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
          -index 2c9868b335..2325a2665b 100644
          ---- a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
          -+++ b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
          -@@ -446,7 +446,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
          - 
          -         const char *textureRecord = allocatorData;
          -         for (int i = 0; i < textureCount; ++i, textureRecord += Qtdf::TextureRecordSize) {
          --            if (textureRecord + Qtdf::TextureRecordSize > qtdfTableEnd) {
          -+            if (qtdfTableEnd - textureRecord < Qtdf::TextureRecordSize) {
          -                 qWarning("qtdf table too small in font '%s'.",
          -                          qPrintable(font.familyName()));
          -                 return false;
          -@@ -462,7 +462,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
          - 
          -         const char *glyphRecord = textureRecord;
          -         for (quint32 i = 0; i < glyphCount; ++i, glyphRecord += Qtdf::GlyphRecordSize) {
          --            if (glyphRecord + Qtdf::GlyphRecordSize > qtdfTableEnd) {
          -+            if (qtdfTableEnd - glyphRecord < Qtdf:: GlyphRecordSize) {
          -                 qWarning("qtdf table too small in font '%s'.",
          -                          qPrintable(font.familyName()));
          -                 return false;
          -@@ -513,7 +513,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
          -             int width = texInfo->allocatedArea.width();
          -             int height = texInfo->allocatedArea.height();
          -             qint64 size = qint64(width) * height;
          --            if (reinterpret_cast(textureData + size) > qtdfTableEnd) {
          -+            if (qtdfTableEnd - reinterpret_cast(textureData) < size) {
          -                 qWarning("qtdf table too small in font '%s'.",
          -                          qPrintable(font.familyName()));
          -                 return false;
          --- 
          -2.39.0
          -
          diff --git a/0014-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch b/0014-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch
          new file mode 100644
          index 0000000..58d751c
          --- /dev/null
          +++ b/0014-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch
          @@ -0,0 +1,113 @@
          +From 7be5422134167fe6d9fd44ef683f407bbda1bce7 Mon Sep 17 00:00:00 2001
          +From: Ulf Hermann 
          +Date: Tue, 30 Nov 2021 14:39:48 +0100
          +Subject: [PATCH 14/19] Qml: Don't crash when as-casting to type with errors
          +
          +Such types don't have a compilation unit, but we still know their names.
          +
          +Pick-to: 6.2
          +Fixes: QTBUG-98792
          +Change-Id: I2db8dea3a5a02ec1492f7f7a054fd3ad4c6ad69a
          +Reviewed-by: Fabian Kosmale 
          +Reviewed-by: Mitch Curtis 
          +(cherry picked from commit e0cd201e91ae64b9c03e0128cd17656b00611fbb)
          +---
          + src/qml/qml/qqmltypewrapper.cpp                  |  6 ++++--
          + src/qml/types/qqmlconnections.cpp                |  2 +-
          + tests/auto/qml/qqmllanguage/data/Broken.qml      |  5 +++++
          + tests/auto/qml/qqmllanguage/data/asBroken.qml    |  6 ++++++
          + tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 16 ++++++++++++++++
          + 5 files changed, 32 insertions(+), 3 deletions(-)
          + create mode 100644 tests/auto/qml/qqmllanguage/data/Broken.qml
          + create mode 100644 tests/auto/qml/qqmllanguage/data/asBroken.qml
          +
          +diff --git a/src/qml/qml/qqmltypewrapper.cpp b/src/qml/qml/qqmltypewrapper.cpp
          +index 175de8b936..a6ba4b8cb3 100644
          +--- a/src/qml/qml/qqmltypewrapper.cpp
          ++++ b/src/qml/qml/qqmltypewrapper.cpp
          +@@ -419,8 +419,10 @@ ReturnedValue QQmlTypeWrapper::virtualInstanceOf(const Object *typeObject, const
          +             return Encode(false);
          + 
          +         QQmlRefPointer td = qenginepriv->typeLoader.getType(typeWrapper->d()->type().sourceUrl());
          +-        ExecutableCompilationUnit *cu = td->compilationUnit();
          +-        myQmlType = qenginepriv->metaObjectForType(cu->metaTypeId);
          ++        if (ExecutableCompilationUnit *cu = td->compilationUnit())
          ++            myQmlType = qenginepriv->metaObjectForType(cu->metaTypeId);
          ++        else
          ++            return Encode(false); // It seems myQmlType has some errors, so we could not compile it.
          +     } else {
          +         myQmlType = qenginepriv->metaObjectForType(myTypeId);
          +     }
          +diff --git a/src/qml/types/qqmlconnections.cpp b/src/qml/types/qqmlconnections.cpp
          +index 29ed62cd39..aba930dfe1 100644
          +--- a/src/qml/types/qqmlconnections.cpp
          ++++ b/src/qml/types/qqmlconnections.cpp
          +@@ -338,7 +338,7 @@ void QQmlConnections::connectSignalsToMethods()
          +                    && propName.at(2).isUpper()) {
          +             qmlWarning(this) << tr("Detected function \"%1\" in Connections element. "
          +                                    "This is probably intended to be a signal handler but no "
          +-                                   "signal of the target matches the name.").arg(propName);
          ++                                   "signal of the \"%2\" target matches the name.").arg(propName).arg(target->metaObject()->className());
          +         }
          +     }
          + }
          +diff --git a/tests/auto/qml/qqmllanguage/data/Broken.qml b/tests/auto/qml/qqmllanguage/data/Broken.qml
          +new file mode 100644
          +index 0000000000..e24d9112a8
          +--- /dev/null
          ++++ b/tests/auto/qml/qqmllanguage/data/Broken.qml
          +@@ -0,0 +1,5 @@
          ++import QtQml 2.15
          ++
          ++QtObject {
          ++    notThere: 5
          ++}
          +diff --git a/tests/auto/qml/qqmllanguage/data/asBroken.qml b/tests/auto/qml/qqmllanguage/data/asBroken.qml
          +new file mode 100644
          +index 0000000000..bd88d14c76
          +--- /dev/null
          ++++ b/tests/auto/qml/qqmllanguage/data/asBroken.qml
          +@@ -0,0 +1,6 @@
          ++import QtQml 2.15
          ++
          ++QtObject {
          ++    id: self
          ++    property var selfAsBroken: self as Broken
          ++}
          +diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
          +index bffb62c59e..97cc64991f 100644
          +--- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
          ++++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
          +@@ -336,6 +336,7 @@ private slots:
          +     void bareInlineComponent();
          + 
          +     void hangOnWarning();
          ++    void objectAsBroken();
          + 
          +     void ambiguousContainingType();
          + 
          +@@ -5876,6 +5877,21 @@ void tst_qqmllanguage::ambiguousContainingType()
          +     }
          + }
          + 
          ++void tst_qqmllanguage::objectAsBroken()
          ++{
          ++    QQmlEngine engine;
          ++    QQmlComponent c(&engine, testFileUrl("asBroken.qml"));
          ++    QVERIFY2(c.isReady(), qPrintable(c.errorString()));
          ++    QScopedPointer o(c.create());
          ++    QVERIFY(!o.isNull());
          ++    QVariant selfAsBroken = o->property("selfAsBroken");
          ++    QVERIFY(selfAsBroken.isValid());
          ++    // QCOMPARE(selfAsBroken.metaType(), QMetaType::fromType());
          ++
          ++    QQmlComponent b(&engine, testFileUrl("Broken.qml"));
          ++    QVERIFY(b.isError());
          ++}
          ++
          + QTEST_MAIN(tst_qqmllanguage)
          + 
          + #include "tst_qqmllanguage.moc"
          +-- 
          +2.40.0
          +
          diff --git a/0014-Reset-currentChanges-if-currentChanges-is-active-whe.patch b/0014-Reset-currentChanges-if-currentChanges-is-active-whe.patch
          deleted file mode 100644
          index 521666e..0000000
          --- a/0014-Reset-currentChanges-if-currentChanges-is-active-whe.patch
          +++ /dev/null
          @@ -1,38 +0,0 @@
          -From 5f183c1a7b2afbe50b4071e6a862c1a6d53de7fb Mon Sep 17 00:00:00 2001
          -From: Tony Leinonen 
          -Date: Thu, 21 Oct 2021 14:44:02 +0300
          -Subject: [PATCH 14/21] Reset currentChanges if currentChanges is active when
          - refilling listView
          -
          -currentIndex was not getting updated because itemViewChangeSet was left
          -active from previous interaction. Clear the changes if they are still
          -active on refill.
          -
          -Task-number: QTBUG-92809
          -Pick-to: 6.2 5.15
          -Change-Id: I81558a5e0bfe0f880851fff85370bd5be60a5391
          -Reviewed-by: Richard Moe Gustavsen 
          -(cherry picked from commit 2d8033a4ffb9ca60adee29d375491d7ed2a82747)
          -
          -* asturmlechner 2021-11-09: Other part of 2d8033a4 is in qtquickcontrols2
          -  but only consists of tests.
          ----
          - src/quick/items/qquickitemview.cpp | 2 +-
          - 1 file changed, 1 insertion(+), 1 deletion(-)
          -
          -diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
          -index 010a0152e1..f8ad168a17 100644
          ---- a/src/quick/items/qquickitemview.cpp
          -+++ b/src/quick/items/qquickitemview.cpp
          -@@ -1785,7 +1785,7 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to)
          - 
          -     do {
          -         bufferPause.stop();
          --        if (currentChanges.hasPendingChanges() || bufferedChanges.hasPendingChanges()) {
          -+        if (currentChanges.hasPendingChanges() || bufferedChanges.hasPendingChanges() || currentChanges.active) {
          -             currentChanges.reset();
          -             bufferedChanges.reset();
          -             releaseVisibleItems(reusableFlag);
          --- 
          -2.39.0
          -
          diff --git a/0015-Fix-missing-glyphs-when-using-NativeRendering.patch b/0015-Fix-missing-glyphs-when-using-NativeRendering.patch
          new file mode 100644
          index 0000000..e761faa
          --- /dev/null
          +++ b/0015-Fix-missing-glyphs-when-using-NativeRendering.patch
          @@ -0,0 +1,54 @@
          +From d54b978c0cba2bf75e145c9e1b00d2a9ab495d70 Mon Sep 17 00:00:00 2001
          +From: Eskil Abrahamsen Blomfeldt 
          +Date: Mon, 19 Dec 2022 10:05:33 +0100
          +Subject: [PATCH 15/19] Fix missing glyphs when using NativeRendering
          +
          +When we look up glyphs with subpixel positions in the glyph cache,
          +we use the calculated subpixel position (from a set of predefined
          +subpixel positions) as key. In some very rare cases, we could end
          +up with different subpixel positions when looking up an on-screen
          +position than when we entered it into the cache, due to numerical
          +differences when doing the calculation.
          +
          +The reason for this was that when entering the glyph into the
          +cache, we used the 16.6 fixed point representation, whereas when
          +looking up, we used the unmodified float. In some cases, the
          +converted fixed point approximation might snap to a different
          +predefined subpixel position than the floating point equivalent.
          +
          +To avoid this, we reuse the converted fixed point positions when
          +looking up the glyphs in the cache.
          +
          +[ChangeLog][Text] Fixed an issue where text using NativeRendering
          +would sometimes be missing glyphs.
          +
          +Pick-to: 5.15 6.2 6.4 6.5
          +Fixes: QTBUG-108713
          +Change-Id: Iecc264eb3d27e875c24257eaefcfb18a1a5fb5be
          +Reviewed-by: Qt CI Bot 
          +Reviewed-by: Lars Knoll 
          +(cherry picked from commit 4bad329985b75090c68a70cceee7edadc172d7ab)
          +---
          + src/quick/scenegraph/qsgdefaultglyphnode_p.cpp | 4 +++-
          + 1 file changed, 3 insertions(+), 1 deletion(-)
          +
          +diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
          +index f912da5799..fd128aa06e 100644
          +--- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
          ++++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
          +@@ -839,9 +839,11 @@ void QSGTextMaskMaterial::populate(const QPointF &p,
          +     bool supportsSubPixelPositions = fontD->fontEngine->supportsSubPixelPositions();
          +     for (int i=0; ifontEngine->subPixelPositionForX(QFixed::fromReal(glyphPosition.x()));
          ++             subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(fixedPointPosition.x.toReal() * glyphCacheScaleX));
          + 
          +          QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphIndexes.at(i), subPixelPosition);
          +          const QTextureGlyphCache::Coord &c = cache->coords.value(glyph);
          +-- 
          +2.40.0
          +
          diff --git a/0016-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch b/0016-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch
          new file mode 100644
          index 0000000..4cf5df5
          --- /dev/null
          +++ b/0016-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch
          @@ -0,0 +1,32 @@
          +From 70b44dd18b9727e9aae857297265a751700a297e Mon Sep 17 00:00:00 2001
          +From: Fushan Wen 
          +Date: Tue, 10 Jan 2023 20:42:04 +0800
          +Subject: [PATCH 16/19] Revert "Fix missing glyphs when using NativeRendering"
          +
          +This reverts commit da5e53b649f50cd9cdd89dadbba16f05e4070be2.
          +
          +It breaks fonts on Wayland when global scale > 100%.
          +---
          + src/quick/scenegraph/qsgdefaultglyphnode_p.cpp | 4 +---
          + 1 file changed, 1 insertion(+), 3 deletions(-)
          +
          +diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
          +index fd128aa06e..f912da5799 100644
          +--- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
          ++++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
          +@@ -839,11 +839,9 @@ void QSGTextMaskMaterial::populate(const QPointF &p,
          +     bool supportsSubPixelPositions = fontD->fontEngine->supportsSubPixelPositions();
          +     for (int i=0; ifontEngine->subPixelPositionForX(QFixed::fromReal(fixedPointPosition.x.toReal() * glyphCacheScaleX));
          ++             subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPosition.x()));
          + 
          +          QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphIndexes.at(i), subPixelPosition);
          +          const QTextureGlyphCache::Coord &c = cache->coords.value(glyph);
          +-- 
          +2.40.0
          +
          diff --git a/0017-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch b/0017-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch
          new file mode 100644
          index 0000000..9fa8e0d
          --- /dev/null
          +++ b/0017-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch
          @@ -0,0 +1,57 @@
          +From c1e41d061329cc886a56477c8c2fd0e81add7780 Mon Sep 17 00:00:00 2001
          +From: Jaeyoon Jung 
          +Date: Fri, 19 Feb 2021 08:11:57 +0900
          +Subject: [PATCH 17/19] QQmlImportDatabase: Make sure the newly added import
          + path be first
          +
          +If it already exists in the import list, move it to the first place.
          +This is as per the description of QQmlEngine::addImportPath:
          +| The newly added path will be first in the importPathList().
          +
          +Change-Id: I782d355c46ada2a46cff72e63326208f39028e01
          +Reviewed-by: Ulf Hermann 
          +(cherry picked from commit 3e413803c698d21f398daf0450c8f501204eb167)
          +---
          + src/qml/qml/qqmlimport.cpp                   | 9 ++++++---
          + tests/auto/qml/qqmlimport/tst_qqmlimport.cpp | 5 +++++
          + 2 files changed, 11 insertions(+), 3 deletions(-)
          +
          +diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp
          +index 10c6c41338..39bfcdc999 100644
          +--- a/src/qml/qml/qqmlimport.cpp
          ++++ b/src/qml/qml/qqmlimport.cpp
          +@@ -2120,9 +2120,12 @@ void QQmlImportDatabase::addImportPath(const QString& path)
          +         cPath.replace(Backslash, Slash);
          +     }
          + 
          +-    if (!cPath.isEmpty()
          +-        && !fileImportPath.contains(cPath))
          +-        fileImportPath.prepend(cPath);
          ++    if (!cPath.isEmpty()) {
          ++        if (fileImportPath.contains(cPath))
          ++            fileImportPath.move(fileImportPath.indexOf(cPath), 0);
          ++        else
          ++            fileImportPath.prepend(cPath);
          ++    }
          + }
          + 
          + /*!
          +diff --git a/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp b/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp
          +index 9c865b3f73..1f788f7a7f 100644
          +--- a/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp
          ++++ b/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp
          +@@ -154,6 +154,11 @@ void tst_QQmlImport::importPathOrder()
          +     engine.addImportPath(QT_QMLTEST_DATADIR);
          +     expectedImportPaths.prepend(QT_QMLTEST_DATADIR);
          +     QCOMPARE(expectedImportPaths, engine.importPathList());
          ++
          ++    // Add qml2Imports again to make it the first of the list
          ++    engine.addImportPath(qml2Imports);
          ++    expectedImportPaths.move(expectedImportPaths.indexOf(qml2Imports), 0);
          ++    QCOMPARE(expectedImportPaths, engine.importPathList());
          + }
          + 
          + Q_DECLARE_METATYPE(QQmlImports::ImportVersion)
          +-- 
          +2.40.0
          +
          diff --git a/0018-QQuickState-when-handle-QJSValue-properties-correctl.patch b/0018-QQuickState-when-handle-QJSValue-properties-correctl.patch
          new file mode 100644
          index 0000000..8c35853
          --- /dev/null
          +++ b/0018-QQuickState-when-handle-QJSValue-properties-correctl.patch
          @@ -0,0 +1,102 @@
          +From 0e1bed3c3e27d44d86d6f68a8b93b96a4821575c Mon Sep 17 00:00:00 2001
          +From: Fabian Kosmale 
          +Date: Wed, 20 Jul 2022 11:44:43 +0200
          +Subject: [PATCH 18/19] QQuickState::when: handle QJSValue properties correctly
          +
          +If one assigns a binding whose evaluation results in a QJSValue, care
          +must be take to correctly convert it into a bool. Instead of directly
          +using QVariant::value, one needs to first extract the QJSValue,
          +and only convert it to bool afterwards.
          +This is necessary due to the custom binding evaluation we're doing to
          +avoid state oscillation.
          +Amends a8c729d83979fb0b9939044d246e73b1d578e65b.
          +
          +Fixes: QTBUG-105000
          +Pick-to: 6.4 6.3 6.2 5.15
          +Change-Id: I4b093b48edecf9e0f09d2b54d10c2ff527f24ac3
          +Reviewed-by: Ulf Hermann 
          +(cherry picked from commit 2c31d25a44b1221c151681e1bb68ef78618e0166)
          +---
          + src/quick/util/qquickstategroup.cpp            | 10 ++++++++--
          + .../quick/qquickstates/data/jsValueWhen.qml    | 18 ++++++++++++++++++
          + .../quick/qquickstates/tst_qquickstates.cpp    | 11 +++++++++++
          + 3 files changed, 37 insertions(+), 2 deletions(-)
          + create mode 100644 tests/auto/quick/qquickstates/data/jsValueWhen.qml
          +
          +diff --git a/src/quick/util/qquickstategroup.cpp b/src/quick/util/qquickstategroup.cpp
          +index 7cb3138618..f732b1eb4a 100644
          +--- a/src/quick/util/qquickstategroup.cpp
          ++++ b/src/quick/util/qquickstategroup.cpp
          +@@ -381,8 +381,14 @@ bool QQuickStateGroupPrivate::updateAutoState()
          +                 const auto potentialWhenBinding = QQmlPropertyPrivate::binding(whenProp);
          +                 // if there is a binding, the value in when might not be up-to-date at this point
          +                 // so we manually reevaluate the binding
          +-                if (auto abstractBinding = dynamic_cast(potentialWhenBinding))
          +-                    whenValue = abstractBinding->evaluate().toBool();
          ++                if (auto abstractBinding = dynamic_cast(potentialWhenBinding)) {
          ++                    QVariant evalResult = abstractBinding->evaluate();
          ++                    if (evalResult.userType() == qMetaTypeId())
          ++                        whenValue = evalResult.value().toBool();
          ++                    else
          ++                        whenValue = evalResult.toBool();
          ++                }
          ++
          +                 if (whenValue) {
          +                     if (stateChangeDebug())
          +                         qWarning() << "Setting auto state due to expression";
          +diff --git a/tests/auto/quick/qquickstates/data/jsValueWhen.qml b/tests/auto/quick/qquickstates/data/jsValueWhen.qml
          +new file mode 100644
          +index 0000000000..6d5eb1600c
          +--- /dev/null
          ++++ b/tests/auto/quick/qquickstates/data/jsValueWhen.qml
          +@@ -0,0 +1,18 @@
          ++import QtQuick 2.15
          ++
          ++Item {
          ++    id: root
          ++    property var prop: null
          ++    property bool works: false
          ++    states: [
          ++        State {
          ++            name: "mystate"
          ++            when: root.prop
          ++            PropertyChanges {
          ++                target: root
          ++                works: "works"
          ++            }
          ++        }
          ++    ]
          ++    Component.onCompleted: root.prop = new Object
          ++}
          +diff --git a/tests/auto/quick/qquickstates/tst_qquickstates.cpp b/tests/auto/quick/qquickstates/tst_qquickstates.cpp
          +index aa55b42935..26e86672b0 100644
          +--- a/tests/auto/quick/qquickstates/tst_qquickstates.cpp
          ++++ b/tests/auto/quick/qquickstates/tst_qquickstates.cpp
          +@@ -188,6 +188,7 @@ private slots:
          +     void revertListMemoryLeak();
          +     void duplicateStateName();
          +     void trivialWhen();
          ++    void jsValueWhen();
          +     void noStateOsciallation();
          +     void parentChangeCorrectReversal();
          +     void revertNullObjectBinding();
          +@@ -1734,6 +1735,16 @@ void tst_qquickstates::trivialWhen()
          +     QVERIFY(c.create());
          + }
          + 
          ++void tst_qquickstates::jsValueWhen()
          ++{
          ++    QQmlEngine engine;
          ++
          ++    QQmlComponent c(&engine, testFileUrl("jsValueWhen.qml"));
          ++    QScopedPointer root(c.create());
          ++    QVERIFY(root);
          ++    QVERIFY(root->property("works").toBool());
          ++}
          ++
          + void tst_qquickstates::noStateOsciallation()
          + {
          +    QQmlEngine engine;
          +-- 
          +2.40.0
          +
          diff --git a/0019-Models-Avoid-crashes-when-deleting-cache-items.patch b/0019-Models-Avoid-crashes-when-deleting-cache-items.patch
          new file mode 100644
          index 0000000..36c78c4
          --- /dev/null
          +++ b/0019-Models-Avoid-crashes-when-deleting-cache-items.patch
          @@ -0,0 +1,162 @@
          +From 89bf481b9b14f038c5e16421a7fce6dc6523785f Mon Sep 17 00:00:00 2001
          +From: Ulf Hermann 
          +Date: Wed, 29 Mar 2023 16:36:03 +0200
          +Subject: [PATCH 19/19] Models: Avoid crashes when deleting cache items
          +
          +Pick-to: 6.5 6.2 5.15
          +Fixes: QTBUG-91425
          +Change-Id: I58cf9ee29922f83fc6621f771b80ed557b31f106
          +Reviewed-by: Shawn Rutledge 
          +Reviewed-by: Fabian Kosmale 
          +(cherry picked from commit 0cfdecba54e4f40468c4c9a8a6668cc1bc0eff65)
          +
          +* asturmlechner 2023-04-08: Resolve conflict with dev branch commit
          +  c2d490a2385ea6f389340a296acaac0fa198c8b9 (qAsConst to std::as_const)
          +---
          + src/qmlmodels/qqmldelegatemodel.cpp           | 23 ++++++---
          + .../qml/qqmldelegatemodel/data/deleteRace.qml | 50 +++++++++++++++++++
          + .../tst_qqmldelegatemodel.cpp                 | 12 +++++
          + 3 files changed, 78 insertions(+), 7 deletions(-)
          + create mode 100644 tests/auto/qml/qqmldelegatemodel/data/deleteRace.qml
          +
          +diff --git a/src/qmlmodels/qqmldelegatemodel.cpp b/src/qmlmodels/qqmldelegatemodel.cpp
          +index bc6b2447af..551e0ede95 100644
          +--- a/src/qmlmodels/qqmldelegatemodel.cpp
          ++++ b/src/qmlmodels/qqmldelegatemodel.cpp
          +@@ -1883,10 +1883,15 @@ void QQmlDelegateModelPrivate::emitChanges()
          +     for (int i = 1; i < m_groupCount; ++i)
          +         QQmlDelegateModelGroupPrivate::get(m_groups[i])->emitModelUpdated(reset);
          + 
          +-    auto cacheCopy = m_cache; // deliberate; emitChanges may alter m_cache
          +-    for (QQmlDelegateModelItem *cacheItem : qAsConst(cacheCopy)) {
          +-        if (cacheItem->attached)
          +-            cacheItem->attached->emitChanges();
          ++    // emitChanges may alter m_cache and delete items
          ++    QVarLengthArray> attachedObjects;
          ++    attachedObjects.reserve(m_cache.length());
          ++    for (const QQmlDelegateModelItem *cacheItem : qAsConst(m_cache))
          ++        attachedObjects.append(cacheItem->attached);
          ++
          ++    for (const QPointer &attached : qAsConst(attachedObjects)) {
          ++        if (attached && attached->m_cacheItem)
          ++            attached->emitChanges();
          +     }
          + }
          + 
          +@@ -2707,20 +2712,24 @@ void QQmlDelegateModelAttached::emitChanges()
          +     m_previousGroups = m_cacheItem->groups;
          + 
          +     int indexChanges = 0;
          +-    for (int i = 1; i < m_cacheItem->metaType->groupCount; ++i) {
          ++    const int groupCount = m_cacheItem->metaType->groupCount;
          ++    for (int i = 1; i < groupCount; ++i) {
          +         if (m_previousIndex[i] != m_currentIndex[i]) {
          +             m_previousIndex[i] = m_currentIndex[i];
          +             indexChanges |= (1 << i);
          +         }
          +     }
          + 
          ++    // Don't access m_cacheItem anymore once we've started sending signals.
          ++    // We don't own it and someone might delete it.
          ++
          +     int notifierId = 0;
          +     const QMetaObject *meta = metaObject();
          +-    for (int i = 1; i < m_cacheItem->metaType->groupCount; ++i, ++notifierId) {
          ++    for (int i = 1; i < groupCount; ++i, ++notifierId) {
          +         if (groupChanges & (1 << i))
          +             QMetaObject::activate(this, meta, notifierId, nullptr);
          +     }
          +-    for (int i = 1; i < m_cacheItem->metaType->groupCount; ++i, ++notifierId) {
          ++    for (int i = 1; i < groupCount; ++i, ++notifierId) {
          +         if (indexChanges & (1 << i))
          +             QMetaObject::activate(this, meta, notifierId, nullptr);
          +     }
          +diff --git a/tests/auto/qml/qqmldelegatemodel/data/deleteRace.qml b/tests/auto/qml/qqmldelegatemodel/data/deleteRace.qml
          +new file mode 100644
          +index 0000000000..23874970e7
          +--- /dev/null
          ++++ b/tests/auto/qml/qqmldelegatemodel/data/deleteRace.qml
          +@@ -0,0 +1,50 @@
          ++import QtQuick 2.15
          ++import QtQml.Models 2.15
          ++
          ++Item {
          ++    DelegateModel {
          ++        id: delegateModel
          ++        model: ListModel {
          ++            id: sourceModel
          ++
          ++            ListElement { title: "foo" }
          ++            ListElement { title: "bar" }
          ++
          ++            function clear() {
          ++                if (count > 0)
          ++                    remove(0, count);
          ++            }
          ++        }
          ++
          ++        groups: [
          ++            DelegateModelGroup { name: "selectedItems" }
          ++        ]
          ++
          ++        delegate: Text {
          ++            height: DelegateModel.inSelectedItems ? implicitHeight * 2 : implicitHeight
          ++            Component.onCompleted: {
          ++                if (index === 0)
          ++                    DelegateModel.inSelectedItems = true;
          ++            }
          ++        }
          ++
          ++        Component.onCompleted: {
          ++            items.create(0)
          ++            items.create(1)
          ++        }
          ++    }
          ++
          ++    ListView {
          ++        anchors.fill: parent
          ++        model: delegateModel
          ++    }
          ++
          ++    Timer {
          ++        running: true
          ++        interval: 10
          ++        onTriggered: sourceModel.clear()
          ++    }
          ++
          ++    property int count: delegateModel.items.count
          ++}
          ++
          +diff --git a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
          +index 1722447830..f473cff75f 100644
          +--- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
          ++++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
          +@@ -50,6 +50,7 @@ private slots:
          +     void qtbug_86017();
          +     void contextAccessedByHandler();
          +     void redrawUponColumnChange();
          ++    void deleteRace();
          + };
          + 
          + class AbstractItemModel : public QAbstractItemModel
          +@@ -213,6 +214,17 @@ void tst_QQmlDelegateModel::redrawUponColumnChange()
          +     QCOMPARE(item->property("text").toString(), "Coconut");
          + }
          + 
          ++void tst_QQmlDelegateModel::deleteRace()
          ++{
          ++    QQmlEngine engine;
          ++    QQmlComponent c(&engine, testFileUrl("deleteRace.qml"));
          ++    QVERIFY2(c.isReady(), qPrintable(c.errorString()));
          ++    QScopedPointer o(c.create());
          ++    QVERIFY(!o.isNull());
          ++    QTRY_COMPARE(o->property("count").toInt(), 2);
          ++    QTRY_COMPARE(o->property("count").toInt(), 0);
          ++}
          ++
          + QTEST_MAIN(tst_QQmlDelegateModel)
          + 
          + #include "tst_qqmldelegatemodel.moc"
          +-- 
          +2.40.0
          +
          diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec
          index c5aaad1..b8a7493 100644
          --- a/qt5-qtdeclarative.spec
          +++ b/qt5-qtdeclarative.spec
          @@ -11,8 +11,8 @@
           
           Summary: Qt5 - QtDeclarative component
           Name:    qt5-%{qt_module}
          -Version: 5.15.8
          -Release: 4.0.riscv64%{?dist}
          +Version: 5.15.9
          +Release: 1.0.riscv64%{?dist}
           
           # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
           License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0
          @@ -27,28 +27,26 @@ Source5: qv4global_p-multilib.h
           ## upstream patches
           ## repo: https://invent.kde.org/qt/qt/qtdeclarative
           ## branch: kde/5.15
          -## git format-patch v5.15.8-lts-lgpl
          -Patch1:  0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch
          -Patch2:  0002-Support-apos-in-styled-text.patch
          -Patch3:  0003-Remove-unused-QPointer-QQuickPointerMask.patch
          -Patch4:  0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
          -Patch5:  0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch
          -Patch6:  0006-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          -Patch7:  0007-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          -Patch8:  0008-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch
          -Patch9:  0009-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch
          -Patch10: 0010-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          -Patch11: 0011-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          -Patch12: 0012-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch
          -Patch13: 0013-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch
          -Patch14: 0014-Reset-currentChanges-if-currentChanges-is-active-whe.patch
          -Patch15: 0015-Don-t-convert-QByteArray-in-startDrag.patch
          -Patch16: 0016-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          -Patch17: 0017-Implement-accessibility-for-QQuickWidget.patch
          -Patch18: 0018-Send-ObjectShow-event-for-visible-components-after-i.patch
          -Patch19: 0019-QQuickItem-avoid-emitting-signals-during-destruction.patch
          -Patch20: 0020-a11y-track-item-enabled-state.patch
          -Patch21: 0021-Make-QaccessibleQuickWidget-private-API.patch
          +## git format-patch v5.15.9-lts-lgpl
          +Patch1:  0001-Remove-unused-QPointer-QQuickPointerMask.patch
          +Patch2:  0002-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
          +Patch3:  0003-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
          +Patch4:  0004-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          +Patch5:  0005-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          +Patch6:  0006-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          +Patch7:  0007-Don-t-convert-QByteArray-in-startDrag.patch
          +Patch8:  0008-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          +Patch9:  0009-Implement-accessibility-for-QQuickWidget.patch
          +Patch10: 0010-Send-ObjectShow-event-for-visible-components-after-i.patch
          +Patch11: 0011-QQuickItem-avoid-emitting-signals-during-destruction.patch
          +Patch12: 0012-a11y-track-item-enabled-state.patch
          +Patch13: 0013-Make-QaccessibleQuickWidget-private-API.patch
          +Patch14: 0014-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch
          +Patch15: 0015-Fix-missing-glyphs-when-using-NativeRendering.patch
          +Patch16: 0016-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch
          +Patch17: 0017-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch
          +Patch18: 0018-QQuickState-when-handle-QJSValue-properties-correctl.patch
          +Patch19: 0019-Models-Avoid-crashes-when-deleting-cache-items.patch
           
           
           ## upstreamable patches
          @@ -242,9 +240,12 @@ make check -k -C tests ||:
           
           
           %changelog
          -* Thu Mar 29 2023 David Abudrachmanov  - 5.15.8-4.0.riscv64
          +* Sat May 13 2023 David Abudrachmanov  - 5.15.9-1.0.riscv64
           - Link to libatomic on riscv64
           
          +* Tue Apr 11 2023 Jan Grulich  - 5.15.9-1
          +- 5.15.9
          +
           * Wed Mar 15 2023 Neal Gompa  - 5.15.8-4
           - Backport fix for crashes in V4 JIT (#2177696)
           
          diff --git a/sources b/sources
          index 7049741..f47312c 100644
          --- a/sources
          +++ b/sources
          @@ -1,2 +1 @@
          -SHA512 (qtdeclarative-everywhere-opensource-src-5.15.6.tar.xz) = a4824b6ec2de5e78819b726850767db6d4280208d6cc985219f4c33b6b0dcd6194557f32b577df97b0596d157190aa9c00e99bf6879554936a356fa7afe8a7d5
          -SHA512 (qtdeclarative-everywhere-opensource-src-5.15.8.tar.xz) = c611cc1d25b7eea1da3e5932d253d024459044d8fff6a31066033ea5867dd20aeb183b2d2ba8a2ca71cf263fc1921126509212dd43ab680134e7a9df8d937d73
          +SHA512 (qtdeclarative-everywhere-opensource-src-5.15.9.tar.xz) = ada3e32f42270899d92c46f0c0b8cd78028cf2e658ac60b3745c804ec494fb1fc6f31a670668074433b3e702f81524415ef132a757ca80151eb13d0a19352af7