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 ea064bcbe199d7c46c4a935f35b9fd4d29f3af05..0000000000000000000000000000000000000000 --- 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 a10a96a945595bc967c39c599096bdf756cb4fde..301b448cc56ec27cd2995afec5b1d640fe65ed33 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 3a90ba41895fed52c755bd99ae35114d843c6fff..8ab7e154a6e34a64e4100e6d306cc079225bf049 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 a43df9d00a9931ecdcad16a046089feba09b979f..0000000000000000000000000000000000000000
      --- 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/0008-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch b/0003-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          similarity index 95%
          rename from 0008-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          rename to 0003-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          index 1b2fb9625136f3b7b4665f064e6f29ceb1b11db9..e2f6dee224b3bdf363ead5ccdb174fd08f497a35 100644
          --- a/0008-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          +++ b/0003-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/0009-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch b/0004-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          similarity index 96%
          rename from 0009-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          rename to 0004-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          index 50b960fa129aec90b510107ec84a1cf97de35638..49e443286be7e4dc72514d79a3f1259965a1b22a 100644
          --- a/0009-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          +++ b/0004-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/0013-Don-t-convert-QByteArray-in-startDrag.patch b/0005-Don-t-convert-QByteArray-in-startDrag.patch
          similarity index 94%
          rename from 0013-Don-t-convert-QByteArray-in-startDrag.patch
          rename to 0005-Don-t-convert-QByteArray-in-startDrag.patch
          index ee0d6f429a0e4b4ca3ed9393ab5f82a93839455d..007bd7a870019fed5ca8e7985dcc5fb9867e10fc 100644
          --- a/0013-Don-t-convert-QByteArray-in-startDrag.patch
          +++ b/0005-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/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 cfd04005728daa89aed420249705ae59c87389de..0000000000000000000000000000000000000000
          --- 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/0014-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch b/0006-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          similarity index 89%
          rename from 0014-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          rename to 0006-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          index 658343bbf61693a2c2cdee8dd8cdfdcba1409299..947b3c400db180cce55f0c5daaf18ca519a7cee9 100644
          --- a/0014-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          +++ b/0006-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/0006-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch b/0006-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch
          deleted file mode 100644
          index 568f207211f621463215e271a63d54eb0e83d8bf..0000000000000000000000000000000000000000
          --- a/0006-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/0015-Implement-accessibility-for-QQuickWidget.patch b/0007-Implement-accessibility-for-QQuickWidget.patch
          similarity index 98%
          rename from 0015-Implement-accessibility-for-QQuickWidget.patch
          rename to 0007-Implement-accessibility-for-QQuickWidget.patch
          index 3749a8e9e57893fd2407226eaae578bddc947c43..fc52c8dc3409310aeadc9b7d95f37f071bf661af 100644
          --- a/0015-Implement-accessibility-for-QQuickWidget.patch
          +++ b/0007-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/0007-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch b/0007-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch
          deleted file mode 100644
          index e87e423163dbb6229e045ebb15d7b8d6bedf09b7..0000000000000000000000000000000000000000
          --- a/0007-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/0016-Send-ObjectShow-event-for-visible-components-after-i.patch b/0008-Send-ObjectShow-event-for-visible-components-after-i.patch
          similarity index 89%
          rename from 0016-Send-ObjectShow-event-for-visible-components-after-i.patch
          rename to 0008-Send-ObjectShow-event-for-visible-components-after-i.patch
          index 07094316900ba2ef176541db9be5c745a864ab61..1537cb33949d7f6adb397aa3907fa7f7f23eb854 100644
          --- a/0016-Send-ObjectShow-event-for-visible-components-after-i.patch
          +++ b/0008-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/0017-QQuickItem-avoid-emitting-signals-during-destruction.patch b/0009-QQuickItem-avoid-emitting-signals-during-destruction.patch
          similarity index 95%
          rename from 0017-QQuickItem-avoid-emitting-signals-during-destruction.patch
          rename to 0009-QQuickItem-avoid-emitting-signals-during-destruction.patch
          index 00e9eaa85a13f2fca72e68dc37b451d96a224d8f..059c4bb8153ab6bfc09e78e0becb8602a0b03344 100644
          --- a/0017-QQuickItem-avoid-emitting-signals-during-destruction.patch
          +++ b/0009-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/0010-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch b/0010-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch
          deleted file mode 100644
          index 37a1ed405a65bd42d5601d16fd0364d5a997bad9..0000000000000000000000000000000000000000
          --- a/0010-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/0018-a11y-track-item-enabled-state.patch b/0010-a11y-track-item-enabled-state.patch
          similarity index 87%
          rename from 0018-a11y-track-item-enabled-state.patch
          rename to 0010-a11y-track-item-enabled-state.patch
          index 817fdc57956296c49e94ae980f97d32d971123c6..3778eee71ecada121afc803d42b3f11476307aa1 100644
          --- a/0018-a11y-track-item-enabled-state.patch
          +++ b/0010-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/0019-Make-QaccessibleQuickWidget-private-API.patch b/0011-Make-QaccessibleQuickWidget-private-API.patch
          similarity index 95%
          rename from 0019-Make-QaccessibleQuickWidget-private-API.patch
          rename to 0011-Make-QaccessibleQuickWidget-private-API.patch
          index 2054f054ac812bcd1dd7027bc21f31ace9d7aaa5..1b9fa28de1c1547c886cbeb67e55d95a03b84dc8 100644
          --- a/0019-Make-QaccessibleQuickWidget-private-API.patch
          +++ b/0011-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/0011-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch b/0011-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch
          deleted file mode 100644
          index c66c1accd8218958fd989abaa93382d8818519f9..0000000000000000000000000000000000000000
          --- a/0011-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/0012-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch b/0012-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..58d751c9c06b7efe97d0674e02acbdb70630cee4
          --- /dev/null
          +++ b/0012-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/0012-Reset-currentChanges-if-currentChanges-is-active-whe.patch b/0012-Reset-currentChanges-if-currentChanges-is-active-whe.patch
          deleted file mode 100644
          index 521666e33837a64b580ababc06e57b8472c0c878..0000000000000000000000000000000000000000
          --- a/0012-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/0013-Fix-missing-glyphs-when-using-NativeRendering.patch b/0013-Fix-missing-glyphs-when-using-NativeRendering.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..e761faa5c4ce78dbf2eef1814cbe99438f22c14a
          --- /dev/null
          +++ b/0013-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/0014-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch b/0014-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..4cf5df5088ac238fea8ff873c62f1ca5ebd40dd1
          --- /dev/null
          +++ b/0014-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/0015-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch b/0015-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..9fa8e0d48b5bf475676443e3afa5c6e2a2d6852f
          --- /dev/null
          +++ b/0015-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/0016-QQuickState-when-handle-QJSValue-properties-correctl.patch b/0016-QQuickState-when-handle-QJSValue-properties-correctl.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..8c358532bb87d01c2202e389b3be5a04ca5f7240
          --- /dev/null
          +++ b/0016-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/0017-Models-Avoid-crashes-when-deleting-cache-items.patch b/0017-Models-Avoid-crashes-when-deleting-cache-items.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..36c78c4fbae236f2a059caa394904e044c7c246c
          --- /dev/null
          +++ b/0017-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/0020-qt5-qtdeclarative-gcc11.patch b/0018-qt5-qtdeclarative-gcc11.patch
          similarity index 100%
          rename from 0020-qt5-qtdeclarative-gcc11.patch
          rename to 0018-qt5-qtdeclarative-gcc11.patch
          diff --git a/0021-qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch b/0019-qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch
          similarity index 100%
          rename from 0021-qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch
          rename to 0019-qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch
          diff --git a/0020-qt-QTBUG-111935-fix-V4-jit.patch b/0020-qt-QTBUG-111935-fix-V4-jit.patch
          new file mode 100644
          index 0000000000000000000000000000000000000000..96ad2c16b51bdbc8428d5c6a0e77da14a945ed9e
          --- /dev/null
          +++ b/0020-qt-QTBUG-111935-fix-V4-jit.patch
          @@ -0,0 +1,44 @@
          +From e2bdde18d9758efdc6a0d7d106aad56995df1271 Mon Sep 17 00:00:00 2001
          +From: Ulf Hermann 
          +Date: Wed, 15 Mar 2023 08:59:43 +0100
          +Subject: [PATCH] JIT: Add missing {STORE|LOAD}_ACC() to CreateCallContext
          +
          +We cannot assume anything about the accumulator register after calling
          +PushCallContext::call(). Also add a note about not needing to re-load
          +the accumulator on ThrowException.
          +
          +Pick-to: 6.5 6.2 5.15
          +Fixes: QTBUG-111935
          +Change-Id: I7196585e1d2697c215f4fe87d8d7ac9b98b622a3
          +---
          + src/qml/jit/qv4baselinejit.cpp | 4 ++++
          + 1 file changed, 4 insertions(+)
          +
          +diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp
          +index 14e183adb8..1d65169dce 100644
          +--- a/src/qml/jit/qv4baselinejit.cpp
          ++++ b/src/qml/jit/qv4baselinejit.cpp
          +@@ -506,6 +506,8 @@ void BaselineJIT::generate_ThrowException()
          +     as->passEngineAsArg(0);
          +     BASELINEJIT_GENERATE_RUNTIME_CALL(ThrowException, CallResultDestination::Ignore);
          +     as->gotoCatchException();
          ++
          ++    // LOAD_ACC(); <- not needed here since it would be unreachable.
          + }
          + 
          + void BaselineJIT::generate_GetException() { as->getException(); }
          +@@ -513,9 +515,11 @@ void BaselineJIT::generate_SetException() { as->setException(); }
          + 
          + void BaselineJIT::generate_CreateCallContext()
          + {
          ++    STORE_ACC();
          +     as->prepareCallWithArgCount(1);
          +     as->passCppFrameAsArg(0);
          +     BASELINEJIT_GENERATE_RUNTIME_CALL(PushCallContext, CallResultDestination::Ignore);
          ++    LOAD_ACC();
          + }
          + 
          + void BaselineJIT::generate_PushCatchContext(int index, int name) { as->pushCatchContext(index, name); }
          +-- 
          +2.39.2
          +
          diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec
          index e57ce30eb11170d4655ee3046cb84f7e161991d2..b7dc08d8fdb8e22f5926619586cae6a3f262e649 100644
          --- a/qt5-qtdeclarative.spec
          +++ b/qt5-qtdeclarative.spec
          @@ -1,4 +1,4 @@
          -%define anolis_release 4
          +%define anolis_release 1
           %define _lto_cflags %{nil}
           
           %global majmin %(echo %{version} | cut -d. -f1-2)
          @@ -6,35 +6,40 @@
           %global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$
           
           Name:    qt5-%{qt_module}
          -Version: 5.15.8
          +Version: 5.15.9
           Release: %{anolis_release}%{?dist}
           Summary: Qt5 - QtDeclarative component
           License: LGPLv2 with exceptions or GPLv3 with exceptions
           Url:     http://www.qt.io
           Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submodules/%{qt_module}-everywhere-opensource-src-%{version}.tar.xz
           
          -Patch0001:  0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch
          -Patch0002:  0002-Support-apos-in-styled-text.patch
          -Patch0003:  0003-Remove-unused-QPointer-QQuickPointerMask.patch
          -Patch0004:  0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
          -Patch0005:  0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch
          -Patch0006:  0006-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch
          -Patch0007:  0007-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch
          -Patch0008:  0008-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          -Patch0009:  0009-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          -Patch0010:  0010-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch
          -Patch0011:  0011-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch
          -Patch0012:  0012-Reset-currentChanges-if-currentChanges-is-active-whe.patch
          -Patch0013:  0013-Don-t-convert-QByteArray-in-startDrag.patch
          -Patch0014:  0014-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          -Patch0015:  0015-Implement-accessibility-for-QQuickWidget.patch
          -Patch0016:  0016-Send-ObjectShow-event-for-visible-components-after-i.patch
          -Patch0017:  0017-QQuickItem-avoid-emitting-signals-during-destruction.patch
          -Patch0018:  0018-a11y-track-item-enabled-state.patch
          -Patch0019:  0019-Make-QaccessibleQuickWidget-private-API.patch
          -
          -Patch0020:  0020-%{name}-gcc11.patch
          -Patch0021:  0021-%{qt_module}-5.15.0-FixMaxXMaxYExtent.patch
          +## upstream patches
          +## repo: https://invent.kde.org/qt/qt/qtdeclarative
          +## branch: kde/5.15
          +## git format-patch v5.15.9-lts-lgpl
          +Patch0001:  0001-Remove-unused-QPointer-QQuickPointerMask.patch
          +Patch0002:  0002-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch
          +Patch0003:  0003-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch
          +Patch0004:  0004-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch
          +Patch0005:  0005-Don-t-convert-QByteArray-in-startDrag.patch
          +Patch0006:  0006-Fix-build-after-95290f66b806a307b8da1f72f8fc2c698019.patch
          +Patch0007:  0007-Implement-accessibility-for-QQuickWidget.patch
          +Patch0008:  0008-Send-ObjectShow-event-for-visible-components-after-i.patch
          +Patch0009:  0009-QQuickItem-avoid-emitting-signals-during-destruction.patch
          +Patch0010:  0010-a11y-track-item-enabled-state.patch
          +Patch0011:  0011-Make-QaccessibleQuickWidget-private-API.patch
          +Patch0012:  0012-Qml-Don-t-crash-when-as-casting-to-type-with-errors.patch
          +Patch0013:  0013-Fix-missing-glyphs-when-using-NativeRendering.patch
          +Patch0014:  0014-Revert-Fix-missing-glyphs-when-using-NativeRendering.patch
          +Patch0015:  0015-QQmlImportDatabase-Make-sure-the-newly-added-import-.patch
          +Patch0016:  0016-QQuickState-when-handle-QJSValue-properties-correctl.patch
          +Patch0017:  0017-Models-Avoid-crashes-when-deleting-cache-items.patch
          +
          +## upstreamable patches
          +Patch0018: 0018-%{name}-gcc11.patch
          +Patch0019: 0019-qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch
          +# From: https://codereview.qt-project.org/c/qt/qtdeclarative/+/466808
          +Patch0020: 0020-qt-QTBUG-111935-fix-V4-jit.patch
           
           BuildRequires: make gcc-c++ qt5-rpm-macros qt5-qtbase-devel >= %{version}
           BuildRequires: qt5-qtbase-private-devel python%{python3_pkgversion}
          @@ -173,6 +178,9 @@ make check -k -C tests ||:
           %endif
           
           %changelog
          +* Tue May 23 2023 Funda Wang  - 5.15.9-1
          +- New version 5.15.9
          +
           * Tue Apr 18 2023 Heng Qi  - 5.15.8-4
           - Delete the 0006-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch
             and 0007-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch
          diff --git a/qtdeclarative-everywhere-opensource-src-5.15.8.tar.xz b/qtdeclarative-everywhere-opensource-src-5.15.9.tar.xz
          similarity index 71%
          rename from qtdeclarative-everywhere-opensource-src-5.15.8.tar.xz
          rename to qtdeclarative-everywhere-opensource-src-5.15.9.tar.xz
          index aacf9f28b605b0a049bd5bde76be1731884c3f05..527257eefd0187f13f51f94ddc39a75fdb4f9150 100644
          Binary files a/qtdeclarative-everywhere-opensource-src-5.15.8.tar.xz and b/qtdeclarative-everywhere-opensource-src-5.15.9.tar.xz differ