diff --git a/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch b/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch index 867d1075c5e2600bd3c122bab3cda5cf004c8e6f..b4b097053b1d26d3daa24bd2a7e83ba233dbd3bd 100644 --- a/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch +++ b/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch @@ -1,7 +1,7 @@ -From 48fc7f164a347f88c221c6a86614008b63b7767f Mon Sep 17 00:00:00 2001 +From 43b6267d024afd655a8c0c8c833f71850d7a8bb9 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 21 May 2021 13:17:15 +0200 -Subject: [PATCH 01/19] Document that StyledText also supports   and +Subject: [PATCH 01/18] Document that StyledText also supports   and " Change-Id: I1715f8ae8ec8d0fbaf6dbe2b8663cc169da663cd @@ -25,5 +25,5 @@ index 6230186933..c1571fc6f5 100644 \c Text.StyledText parser is strict, requiring tags to be correctly nested. -- -2.36.1 +2.37.3 diff --git a/0002-Support-apos-in-styled-text.patch b/0002-Support-apos-in-styled-text.patch index ae0d3e6b9faaee4710fd77404c2e424d20b8c3fe..97159510661ac84b3f6083726dfa6e7511475d2a 100644 --- a/0002-Support-apos-in-styled-text.patch +++ b/0002-Support-apos-in-styled-text.patch @@ -1,7 +1,7 @@ -From 65394fd28a8acaf26039418c21718894891295c6 Mon Sep 17 00:00:00 2001 +From 8e28af8076873503bbf036487aaf7310407a2f11 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 21 May 2021 13:42:35 +0200 -Subject: [PATCH 02/19] Support ' in styled text +Subject: [PATCH 02/18] Support ' in styled text Pick-to: 6.1 5.15 Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929 @@ -40,5 +40,5 @@ index d531fc9205..a25af90414 100644 textOut += QChar(34); else if (entity == QLatin1String("nbsp")) -- -2.36.1 +2.37.3 diff --git a/0003-Remove-unused-QPointer-QQuickPointerMask.patch b/0003-Remove-unused-QPointer-QQuickPointerMask.patch index 5fe3639369354fc17d6bfa0747cd26e00de3ea09..fdb521fd846222fa2d5a8916aeef37f607ae7067 100644 --- a/0003-Remove-unused-QPointer-QQuickPointerMask.patch +++ b/0003-Remove-unused-QPointer-QQuickPointerMask.patch @@ -1,7 +1,7 @@ -From 9828b34ccf14d33bc9a61a4bd37e9e8d7877168a Mon Sep 17 00:00:00 2001 +From 0f3b328766038c1161f4f613a0bf3a4fcbdb4cef Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 17 Jun 2021 16:32:28 +0200 -Subject: [PATCH 03/19] Remove unused QPointer +Subject: [PATCH 03/18] Remove unused QPointer Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851 Reviewed-by: Shawn Rutledge @@ -31,5 +31,5 @@ index fba383e268..0d63618622 100644 QPointF targetStartPos; QPointF lastPos; -- -2.36.1 +2.37.3 diff --git a/0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch b/0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch deleted file mode 100644 index f48159287058069f0596da5891e43f1f391637d0..0000000000000000000000000000000000000000 --- a/0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 814f570d51323630ff84038ca04b5c02639e0ee5 Mon Sep 17 00:00:00 2001 -From: Dmitry Shachnev -Date: Wed, 18 Aug 2021 22:50:29 +0300 -Subject: [PATCH 04/19] Include in Yarr.h to fix build with GCC 11 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- (aka ) is needed for UINT_MAX macro constant. -- is needed for std::numeric_limits. - -Without this fix, qtdeclarative failed to build on some platforms: - - In file included from jsruntime/qv4regexp_p.h:62, - from jsruntime/qv4regexp.cpp:40: - ../3rdparty/masm/yarr/Yarr.h:46:44: error: ‘numeric_limits’ is not a member of ‘std’ - 46 | static const unsigned offsetNoMatch = std::numeric_limits::max(); - | ^~~~~~~~~~~~~~ - -Pick-to: 5.15 6.2 -Change-Id: I7cc9f7bc6624a52c8659f09034ab16064da5fd2f -Reviewed-by: Albert Astals Cid -Reviewed-by: Ulf Hermann -(cherry picked from commit db58b8518e157b765bf2e01e6382a9eed4751f27) ---- - src/3rdparty/masm/yarr/Yarr.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/3rdparty/masm/yarr/Yarr.h b/src/3rdparty/masm/yarr/Yarr.h -index ccf78f9880..2955ea7e72 100644 ---- a/src/3rdparty/masm/yarr/Yarr.h -+++ b/src/3rdparty/masm/yarr/Yarr.h -@@ -28,6 +28,7 @@ - #pragma once - - #include -+#include - #include "YarrErrorCode.h" - - namespace JSC { namespace Yarr { --- -2.36.1 - diff --git a/0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch b/0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch similarity index 94% rename from 0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch rename to 0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch index 01f472b379a51604829415a9f313f269369e71d7..afdc49279879a7657bfad47a4359fbb8a0e16063 100644 --- a/0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch +++ b/0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch @@ -1,7 +1,7 @@ -From 95064bee0366ed3aa9cc823ed73fba55093ced01 Mon Sep 17 00:00:00 2001 +From ad09b853a3a137127de847d4d6d55f73ab09899d Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Thu, 23 Sep 2021 03:43:04 +0200 -Subject: [PATCH 06/19] QQmlDelegateModel: Refresh the view when a column is +Subject: [PATCH 04/18] 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 312a621029..f5d586a4c2 100644 +index 2079a8ed04..a577cb2351 100644 --- a/src/qmlmodels/qqmldelegatemodel.cpp +++ b/src/qmlmodels/qqmldelegatemodel.cpp @@ -389,6 +389,12 @@ void QQmlDelegateModelPrivate::connectToAbstractItemModel() @@ -51,7 +51,7 @@ index 312a621029..f5d586a4c2 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)), -@@ -1960,6 +1972,38 @@ void QQmlDelegateModel::_q_rowsMoved( +@@ -1973,6 +1985,38 @@ void QQmlDelegateModel::_q_rowsMoved( } } @@ -122,7 +122,7 @@ index 0000000000..206133bb39 + } +} diff --git a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp -index 9bc359d243..120b1897a1 100644 +index 35f1e2c94d..1722447830 100644 --- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp +++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp @@ -27,6 +27,8 @@ @@ -134,16 +134,16 @@ index 9bc359d243..120b1897a1 100644 #include #include #include -@@ -46,6 +48,7 @@ private slots: - void valueWithoutCallingObjectFirst(); +@@ -47,6 +49,7 @@ private slots: void filterOnGroup_removeWhenCompleted(); void qtbug_86017(); + void contextAccessedByHandler(); + void redrawUponColumnChange(); }; class AbstractItemModel : public QAbstractItemModel -@@ -164,6 +167,30 @@ void tst_QQmlDelegateModel::qtbug_86017() - QCOMPARE(model->filterGroup(), "selected"); +@@ -186,6 +189,30 @@ void tst_QQmlDelegateModel::contextAccessedByHandler() + QVERIFY(root->property("works").toBool()); } +void tst_QQmlDelegateModel::redrawUponColumnChange() @@ -174,5 +174,5 @@ index 9bc359d243..120b1897a1 100644 #include "tst_qqmldelegatemodel.moc" -- -2.36.1 +2.37.3 diff --git a/0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch b/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch similarity index 97% rename from 0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch rename to 0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch index 559d5e8ffe734967dad15ba9e80d7d87f68202d1..7242c29b29cff3d0b17afc8ec7d90d1231e8d264 100644 --- a/0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch +++ b/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch @@ -1,7 +1,7 @@ -From c580a46359307b03bb3e8d5a3ce844fcd167d92d Mon Sep 17 00:00:00 2001 +From 55caf921033dc1f310c1d370a046908cb0a6bc57 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Sun, 10 Oct 2021 21:04:21 +0300 -Subject: [PATCH 07/19] Fix sweep step for tainted QObject JavaScript wrappers +Subject: [PATCH 05/18] Fix sweep step for tainted QObject JavaScript wrappers Currently, whenever the garbage collector runs, it will destroy all valid tainted wrappers. @@ -115,5 +115,5 @@ index 5d635aa63b..824fd89e5b 100644 // engine2 doesn't own the object as engine1 was the first to wrap it above. // Therefore, no effect here. -- -2.36.1 +2.37.3 diff --git a/0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch b/0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch deleted file mode 100644 index fcfffd824d41a57bb8b6acc05c6e605a2a305590..0000000000000000000000000000000000000000 --- a/0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch +++ /dev/null @@ -1,112 +0,0 @@ -From adf0f345f6fb823679e1c6424d106fd1413c1edc Mon Sep 17 00:00:00 2001 -From: Aleix Pol -Date: Tue, 21 Sep 2021 00:10:26 +0200 -Subject: [PATCH 05/19] QQuickLoader: Do not incubate if the source arrives - after setActive(false) - -Otherwise we end up in the crazy place of active being false but item -being non-null and forces us to workaround within the apps. - -Change-Id: I88c27c4b00ccec8b8e0c05a8e10b44fcabfc2e30 -Reviewed-by: Ulf Hermann -(cherry picked from commit e78c068700fa74ab3aca6a23ab2450563b1c3a5c) -Reviewed-by: Qt Cherry-pick Bot ---- - src/quick/items/qquickloader.cpp | 3 +++ - .../data/loader-async-race-rect.qml | 10 ++++++++++ - .../qquickloader/data/loader-async-race.qml | 14 ++++++++++++++ - .../quick/qquickloader/tst_qquickloader.cpp | 19 +++++++++++++++++++ - 4 files changed, 46 insertions(+) - create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race-rect.qml - create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race.qml - -diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp -index cb4f79a3c2..7fbe66fdda 100644 ---- a/src/quick/items/qquickloader.cpp -+++ b/src/quick/items/qquickloader.cpp -@@ -737,6 +737,9 @@ void QQuickLoaderPrivate::_q_sourceLoaded() - return; - } - -+ if (!active) -+ return; -+ - QQmlContext *creationContext = component->creationContext(); - if (!creationContext) creationContext = qmlContext(q); - itemContext = new QQmlContext(creationContext); -diff --git a/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml -new file mode 100644 -index 0000000000..a56dcea5ad ---- /dev/null -+++ b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml -@@ -0,0 +1,10 @@ -+import QtQuick 2.15 -+ -+Rectangle { -+ anchors.fill: parent -+ color: "blue" -+ Item { -+ Item { -+ } -+ } -+} -diff --git a/tests/auto/quick/qquickloader/data/loader-async-race.qml b/tests/auto/quick/qquickloader/data/loader-async-race.qml -new file mode 100644 -index 0000000000..8ba625c5c1 ---- /dev/null -+++ b/tests/auto/quick/qquickloader/data/loader-async-race.qml -@@ -0,0 +1,14 @@ -+import QtQuick 2.15 -+ -+Item { -+ id: root -+ Component.onCompleted: { -+ myloader.active = false -+ } -+ Loader { -+ id: myloader -+ anchors.fill: parent -+ asynchronous: true -+ source: "loader-async-race-rect.qml" -+ } -+} -diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp -index 0f6c811adb..dddacbaa0b 100644 ---- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp -+++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp -@@ -132,6 +132,7 @@ private slots: - void statusChangeOnlyEmittedOnce(); - - void setSourceAndCheckStatus(); -+ void asyncLoaderRace(); - }; - - Q_DECLARE_METATYPE(QList) -@@ -1496,6 +1497,24 @@ void tst_QQuickLoader::setSourceAndCheckStatus() - QCOMPARE(loader->status(), QQuickLoader::Null); - } - -+void tst_QQuickLoader::asyncLoaderRace() -+{ -+ QQmlApplicationEngine engine; -+ auto url = testFileUrl("loader-async-race.qml"); -+ engine.load(url); -+ auto root = engine.rootObjects().at(0); -+ QVERIFY(root); -+ -+ QQuickLoader *loader = root->findChild(); -+ QCOMPARE(loader->active(), false); -+ QCOMPARE(loader->status(), QQuickLoader::Null); -+ QCOMPARE(loader->item(), nullptr); -+ -+ QSignalSpy spy(loader, &QQuickLoader::itemChanged); -+ QVERIFY(!spy.wait(100)); -+ QCOMPARE(loader->item(), nullptr); -+} -+ - QTEST_MAIN(tst_QQuickLoader) - - #include "tst_qquickloader.moc" --- -2.36.1 - diff --git a/0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch b/0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch similarity index 95% rename from 0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch rename to 0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch index 8b1eecb299fcb689da135b81a678c5cf6c5c891c..24de445c5f3cb98c510f29b0e793827f9603f499 100644 --- a/0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch +++ b/0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch @@ -1,7 +1,7 @@ -From b92f401a758890d26ef0d00d15c33af5c81f9038 Mon Sep 17 00:00:00 2001 +From 1cb0de43684c7f23cd121d48ebd84a9da688c8ef Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 11 Oct 2021 15:37:33 +0200 -Subject: [PATCH 09/19] Revert "Fix for possible crash in +Subject: [PATCH 06/18] Revert "Fix for possible crash in QSGDefaultLayer::grab" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -67,5 +67,5 @@ index 4deb6c70a3..c0a1ccab78 100644 protected: void releaseResources() override; -- -2.36.1 +2.37.3 diff --git a/0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch b/0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch similarity index 95% rename from 0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch rename to 0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch index c8f6cde6b07c73302778e1799035fdc12bdb8b8d..a22fa4c803283a1a26bc03c988c27ce785c51d3a 100644 --- a/0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch +++ b/0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch @@ -1,7 +1,7 @@ -From 695e1217f2e568feb3ddec91b2cf70df251964e5 Mon Sep 17 00:00:00 2001 +From 7dd0d9f9ce9bbd5e21f017069256d52b397a6195 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 10/19] Fix TapHandler so that it actually registers a tap +Subject: [PATCH 07/18] 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.36.1 +2.37.3 diff --git a/0008-Fix-distorted-text-with-subpixel-matrix-translation.patch b/0008-Fix-distorted-text-with-subpixel-matrix-translation.patch deleted file mode 100644 index 4146a45bbe041fa69436c678a2865c57f451d47b..0000000000000000000000000000000000000000 --- a/0008-Fix-distorted-text-with-subpixel-matrix-translation.patch +++ /dev/null @@ -1,483 +0,0 @@ -From 74db4a874a39b189d000d0b8507fccfbacf83294 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt -Date: Tue, 12 Oct 2021 13:13:01 +0200 -Subject: [PATCH 08/19] Fix distorted text with subpixel matrix translation - -We would pixel-align native text *before* applying the -model-view matrix, which would cause GL_NEAREST artifacts to -show up when the text was positioned at a subpixel offset in -some cases. Instead, we pixel-align the coordinates after mapping -them to the view frustum, but before applying the projection to the -screen. - -To make it easier to modify the buffer layout for the shaders the -next time, this also adds some constants for offsets. - -[ChangeLog][Text] Fixed an issue where text using NativeRendering -would look slightly skewed if it was inside a parent that had -been positioned at a subpixel offset. - -Pick-to: 5.15 6.2 -Fixes: QTBUG-96112 -Fixes: QTBUG-83626 -Task-number: QTBUG-55638 -Change-Id: Ifb785ad5830093df94afc75a7bc288e24ca7aa38 -Reviewed-by: Eirik Aavitsland -(cherry picked from commit b21948f5e811ce1b7abf065bc48af61a231e86f4) ---- - .../scenegraph/qsgdefaultglyphnode_p.cpp | 46 ++++++---- - .../scenegraph/shaders_ng/24bittextmask.frag | 5 +- - .../scenegraph/shaders_ng/32bitcolortext.frag | 5 +- - .../scenegraph/shaders_ng/8bittextmask.frag | 3 +- - .../scenegraph/shaders_ng/8bittextmask_a.frag | 3 +- - .../scenegraph/shaders_ng/outlinedtext.frag | 5 +- - .../scenegraph/shaders_ng/outlinedtext.vert | 9 +- - .../scenegraph/shaders_ng/outlinedtext_a.frag | 5 +- - .../scenegraph/shaders_ng/styledtext.frag | 3 +- - .../scenegraph/shaders_ng/styledtext.vert | 7 +- - .../scenegraph/shaders_ng/styledtext_a.frag | 3 +- - src/quick/scenegraph/shaders_ng/textmask.frag | 3 +- - src/quick/scenegraph/shaders_ng/textmask.vert | 7 +- - ...text_nativerendering_subpixelpositions.qml | 91 +++++++++++++++++++ - 14 files changed, 155 insertions(+), 40 deletions(-) - create mode 100644 tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml - -diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -index 3c60f830de..0fd6581dc4 100644 ---- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -+++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -@@ -428,6 +428,18 @@ QSGTextMaskRhiShader::QSGTextMaskRhiShader(QFontEngine::GlyphFormat glyphFormat) - QStringLiteral(":/qt-project.org/scenegraph/shaders_ng/textmask.frag.qsb")); - } - -+enum UbufOffset { -+ ModelViewMatrixOffset = 0, -+ ProjectionMatrixOffset = ModelViewMatrixOffset + 64, -+ ColorOffset = ProjectionMatrixOffset + 64, -+ TextureScaleOffset = ColorOffset + 16, -+ DprOffset = TextureScaleOffset + 8, -+ -+ // + 1 float padding (vec4 must be aligned to 16) -+ StyleColorOffset = DprOffset + 4 + 4, -+ ShiftOffset = StyleColorOffset + 16 -+}; -+ - bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - QSGMaterial *newMaterial, QSGMaterial *oldMaterial) - { -@@ -443,11 +455,14 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - - bool changed = false; - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= DprOffset + 4); - - if (state.isMatrixDirty()) { -- const QMatrix4x4 m = state.combinedMatrix(); -- memcpy(buf->data(), m.constData(), 64); -+ const QMatrix4x4 mv = state.modelViewMatrix(); -+ memcpy(buf->data() + ModelViewMatrixOffset, mv.constData(), 64); -+ const QMatrix4x4 p = state.projectionMatrix(); -+ memcpy(buf->data() + ProjectionMatrixOffset, p.constData(), 64); -+ - changed = true; - } - -@@ -456,13 +471,13 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - if (updated || !oldMat || oldRtex != newRtex) { - const QVector2D textureScale = QVector2D(1.0f / mat->rhiGlyphCache()->width(), - 1.0f / mat->rhiGlyphCache()->height()); -- memcpy(buf->data() + 64 + 16, &textureScale, 8); -+ memcpy(buf->data() + TextureScaleOffset, &textureScale, 8); - changed = true; - } - - if (!oldMat) { - float dpr = state.devicePixelRatio(); -- memcpy(buf->data() + 64 + 16 + 8, &dpr, 4); -+ memcpy(buf->data() + DprOffset, &dpr, 4); - } - - // move texture uploads/copies onto the renderer's soon-to-be-committed list -@@ -510,11 +525,11 @@ bool QSG8BitTextMaskRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 80); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - const QVector4D color = qsg_premultiply(mat->color(), state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -553,12 +568,12 @@ bool QSG24BitTextMaskRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - // shader takes vec4 but uses alpha only; coloring happens via the blend constant - const QVector4D color = qsg_premultiply(mat->color(), state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -608,12 +623,12 @@ bool QSG32BitColorTextRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - // shader takes vec4 but uses alpha only - const QVector4D color(0, 0, 0, mat->color().w() * state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -649,20 +664,17 @@ bool QSGStyledTextRhiShader::updateUniformData(RenderState &state, - QSGStyledTextMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 120); -- -- // matrix..dpr + 1 float padding (vec4 must be aligned to 16) -- const int startOffset = 64 + 16 + 8 + 4 + 4; -+ Q_ASSERT(buf->size() >= ShiftOffset + 8); - - if (oldMat == nullptr || mat->styleColor() != oldMat->styleColor() || state.isOpacityDirty()) { - const QVector4D styleColor = qsg_premultiply(mat->styleColor(), state.opacity()); -- memcpy(buf->data() + startOffset, &styleColor, 16); -+ memcpy(buf->data() + StyleColorOffset, &styleColor, 16); - changed = true; - } - - if (oldMat == nullptr || oldMat->styleShift() != mat->styleShift()) { - const QVector2D v = mat->styleShift(); -- memcpy(buf->data() + startOffset + 16, &v, 8); -+ memcpy(buf->data() + ShiftOffset, &v, 8); - changed = true; - } - -diff --git a/src/quick/scenegraph/shaders_ng/24bittextmask.frag b/src/quick/scenegraph/shaders_ng/24bittextmask.frag -index bc3826a924..ed8da4cd30 100644 ---- a/src/quick/scenegraph/shaders_ng/24bittextmask.frag -+++ b/src/quick/scenegraph/shaders_ng/24bittextmask.frag -@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -- vec4 color; // only alpha is used, but must be vec4 due to layout compat -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; -+ vec4 color; - vec2 textureScale; - float dpr; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -index 63e445f90b..4198a4d339 100644 ---- a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -+++ b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -- vec4 color; // only alpha is used, but must be vec4 due to layout compat -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; -+ vec4 color; - vec2 textureScale; - float dpr; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask.frag b/src/quick/scenegraph/shaders_ng/8bittextmask.frag -index 6304e821ff..a06743876d 100644 ---- a/src/quick/scenegraph/shaders_ng/8bittextmask.frag -+++ b/src/quick/scenegraph/shaders_ng/8bittextmask.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -index 0d0fa1cd3a..f725cbc5e7 100644 ---- a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -+++ b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.frag b/src/quick/scenegraph/shaders_ng/outlinedtext.frag -index 947d161a50..e2f82d3845 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext.frag -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.frag -@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.vert b/src/quick/scenegraph/shaders_ng/outlinedtext.vert -index 023f9dfdc2..4068e42f28 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext.vert -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.vert -@@ -10,11 +10,12 @@ layout(location = 3) out vec2 sCoordLeft; - layout(location = 4) out vec2 sCoordRight; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -@@ -28,6 +29,6 @@ void main() - sCoordDown = (tCoord - vec2(0.0, 1.0)) * ubuf.textureScale; - sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * ubuf.textureScale; - sCoordRight = (tCoord - vec2(1.0, 0.0)) * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -index 5b7bd9ca82..274d891a3c 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/styledtext.frag b/src/quick/scenegraph/shaders_ng/styledtext.frag -index 0b16396037..2e380dfeae 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext.frag -+++ b/src/quick/scenegraph/shaders_ng/styledtext.frag -@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/styledtext.vert b/src/quick/scenegraph/shaders_ng/styledtext.vert -index beadf07c79..271dae8d8a 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext.vert -+++ b/src/quick/scenegraph/shaders_ng/styledtext.vert -@@ -7,7 +7,8 @@ layout(location = 0) out vec2 sampleCoord; - layout(location = 1) out vec2 shiftedSampleCoord; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -@@ -22,6 +23,6 @@ void main() - { - sampleCoord = tCoord * ubuf.textureScale; - shiftedSampleCoord = (tCoord - ubuf.shift) * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/src/quick/scenegraph/shaders_ng/styledtext_a.frag b/src/quick/scenegraph/shaders_ng/styledtext_a.frag -index b673137895..62e162c851 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext_a.frag -+++ b/src/quick/scenegraph/shaders_ng/styledtext_a.frag -@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/textmask.frag b/src/quick/scenegraph/shaders_ng/textmask.frag -index 518d5c965f..ed8da4cd30 100644 ---- a/src/quick/scenegraph/shaders_ng/textmask.frag -+++ b/src/quick/scenegraph/shaders_ng/textmask.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/textmask.vert b/src/quick/scenegraph/shaders_ng/textmask.vert -index 9d80d5dadb..e0b3c01bce 100644 ---- a/src/quick/scenegraph/shaders_ng/textmask.vert -+++ b/src/quick/scenegraph/shaders_ng/textmask.vert -@@ -6,7 +6,8 @@ layout(location = 1) in vec2 tCoord; - layout(location = 0) out vec2 sampleCoord; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -@@ -17,6 +18,6 @@ out gl_PerVertex { vec4 gl_Position; }; - void main() - { - sampleCoord = tCoord * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml -new file mode 100644 -index 0000000000..c60fc4d8b0 ---- /dev/null -+++ b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml -@@ -0,0 +1,91 @@ -+import QtQuick 2.0 -+ -+//vary font style, native rendering at non-integer offsets -+ -+Item { -+ id: topLevel -+ width: 320 -+ height: 580 -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 20 * index -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 100.5 + 20 * index -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 200.5 + 20 * index -+ x: 0.5 -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 300.5 + 20 * index -+ x: 0.5 -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Rectangle { -+ y: 400.5 + 20 * index -+ x: 0.5 -+ width: topLevel.width -+ height: topLevel.height -+ clip: true -+ Text { -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ } -+} --- -2.36.1 - diff --git a/0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch b/0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch similarity index 94% rename from 0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch rename to 0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch index bfa99c49f1416405eaddad09c84b7a6f964422a1..b7b7d58bdacff3bd8419147ffc39a446cb89ec07 100644 --- a/0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch +++ b/0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch @@ -1,7 +1,7 @@ -From d46164fdd36d748d427716e473e8f006d391f088 Mon Sep 17 00:00:00 2001 +From ad102f786a12d0cc139bfbebea8edbab3dd8206d Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Tue, 16 Nov 2021 22:43:37 +0100 -Subject: [PATCH 11/19] Revert "Fix TapHandler so that it actually registers a +Subject: [PATCH 08/18] 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.36.1 +2.37.3 diff --git a/0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch b/0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch similarity index 89% rename from 0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch rename to 0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch index 623af7e64c7e1355beda2bd5024d0e74d277eba6..fde8f4b73d65a7d1ed4bf8479002a317623085f3 100644 --- a/0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch +++ b/0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch @@ -1,7 +1,7 @@ -From 01322ea1a58b441071be7c66754d62ac50f49c4e Mon Sep 17 00:00:00 2001 +From 2d11778ce9348716ce936ce11c89ced58d8ec188 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 21 Dec 2021 09:20:17 +0100 -Subject: [PATCH 12/19] QQmlJs::FixedPoolArray: fix UB (precondition violation) +Subject: [PATCH 09/18] QQmlJs::FixedPoolArray: fix UB (precondition violation) in allocate() Says ubsan: @@ -32,5 +32,5 @@ index b65b994d6c..15a8cd6878 100644 } } -- -2.36.1 +2.37.3 diff --git a/0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch b/0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch similarity index 92% rename from 0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch rename to 0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch index 68f1bad8b3fe734dcfd3065a818550a92511672b..a3c1aa37e49fc63f6cf02adf0f4a603e5110c101 100644 --- a/0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch +++ b/0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch @@ -1,7 +1,7 @@ -From f5de08d116481630ad0843990ffdf141fd6ce69e Mon Sep 17 00:00:00 2001 +From eb04ee7e02c5e7a2b84b129c09f13025242688d6 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 3 Feb 2022 10:02:06 +0100 -Subject: [PATCH 13/19] V4: Do not call dtor of an object we continue to use +Subject: [PATCH 10/18] 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 @@ -47,5 +47,5 @@ index 9899c9274e..272b85069f 100644 -- -2.36.1 +2.37.3 diff --git a/0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch b/0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch similarity index 95% rename from 0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch rename to 0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch index 3fbbbcd8e2b7eb7d476aa898afa0075839e6b9b9..bedaf017bdf0e504eef5dd59b119c0625273f860 100644 --- a/0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch +++ b/0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch @@ -1,7 +1,7 @@ -From b485b9ca8983499a55d7e06a3ac3f0ac45a61b99 Mon Sep 17 00:00:00 2001 +From 436f3c0550f64b4cb629480a6b7ceb1381f30501 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Sat, 29 Jan 2022 21:59:33 +0200 -Subject: [PATCH 14/19] Make sure QQuickWidget and its offscreen window's +Subject: [PATCH 11/18] 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.36.1 +2.37.3 diff --git a/0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch b/0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch similarity index 94% rename from 0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch rename to 0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch index d587bb4483e115a55e6fa2a94f3c20e275fe3c17..50f9d95806fe28668d0940b90e38bb9a7d01a2f1 100644 --- a/0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch +++ b/0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch @@ -1,7 +1,7 @@ -From aca0c736c99439a8f4d297bc57c1fa5a2d2a6e88 Mon Sep 17 00:00:00 2001 +From 74c8c421763597f778313ea976fffdc03183226b Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Wed, 4 May 2022 09:10:54 +0200 -Subject: [PATCH 15/19] QQuickItem: Guard against cycles in +Subject: [PATCH 12/18] 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 3df899d63d..83e52b12e5 100644 +index 75f1457816..9de244ed9e 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -59,6 +59,7 @@ @@ -88,10 +88,10 @@ index 0000000000..889e480f3b + } +} diff --git a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp -index f65650cf9c..eeff768bb4 100644 +index c8f251dbe1..c8ef36ee68 100644 --- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp +++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp -@@ -66,6 +66,7 @@ private slots: +@@ -67,6 +67,7 @@ private slots: void activeFocusOnTab10(); void activeFocusOnTab_infiniteLoop_data(); void activeFocusOnTab_infiniteLoop(); @@ -99,7 +99,7 @@ index f65650cf9c..eeff768bb4 100644 void nextItemInFocusChain(); void nextItemInFocusChain2(); -@@ -1055,6 +1056,17 @@ void tst_QQuickItem::activeFocusOnTab_infiniteLoop() +@@ -1057,6 +1058,17 @@ void tst_QQuickItem::activeFocusOnTab_infiniteLoop() QCOMPARE(item, window->rootObject()); } @@ -118,5 +118,5 @@ index f65650cf9c..eeff768bb4 100644 { if (!qt_tab_all_widgets()) -- -2.36.1 +2.37.3 diff --git a/0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch b/0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch similarity index 93% rename from 0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch rename to 0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch index 3e1f824b9c6f5afe8a5122255aff857198f15f20..241a8050c1d8d6ee75093e003b963949f0da933a 100644 --- a/0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch +++ b/0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch @@ -1,7 +1,7 @@ -From db0c06d98464d8d0cc6dfddfc502593951bac768 Mon Sep 17 00:00:00 2001 +From 76113c63af23d516f488f5e6b9062ca97e062e9e Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 16 Jul 2019 11:23:37 +0200 -Subject: [PATCH 16/19] QSGOpenGLDistanceFieldGlyphCache: fix multiplication +Subject: [PATCH 13/18] QSGOpenGLDistanceFieldGlyphCache: fix multiplication result truncation The type of the expression int * int is int, so truncation has already @@ -39,5 +39,5 @@ index 53b6fe117f..f7cb8bede3 100644 qWarning("qtdf table too small in font '%s'.", qPrintable(font.familyName())); -- -2.36.1 +2.37.3 diff --git a/0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch b/0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch similarity index 95% rename from 0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch rename to 0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch index e22eaf396cc2a01ff40749aac98c049ecf9ec280..63d6cf36e2795ae82cf478341271b8af9d442cbf 100644 --- a/0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch +++ b/0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch @@ -1,7 +1,7 @@ -From 59019a226146d9d80a01db21c0c3d692027048aa Mon Sep 17 00:00:00 2001 +From 985358efb1e60a8ff493da4d6ca9056f63dc9982 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 16 Jul 2019 11:31:01 +0200 -Subject: [PATCH 17/19] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of +Subject: [PATCH 14/18] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of pointers not from the same array) The code performed out of bounds checks by adding the size of the @@ -64,5 +64,5 @@ index f7cb8bede3..219cdd5966 100644 qPrintable(font.familyName())); return false; -- -2.36.1 +2.37.3 diff --git a/0018-Fix-Flickable-wheel-velocity-calculation.patch b/0015-Fix-Flickable-wheel-velocity-calculation.patch similarity index 98% rename from 0018-Fix-Flickable-wheel-velocity-calculation.patch rename to 0015-Fix-Flickable-wheel-velocity-calculation.patch index 159f15fa150c4dd57a763484de7f2f101d5a24e6..f8837b2429d58bb175f53eaa050fa9acba29eed8 100644 --- a/0018-Fix-Flickable-wheel-velocity-calculation.patch +++ b/0015-Fix-Flickable-wheel-velocity-calculation.patch @@ -1,7 +1,7 @@ -From 955c47dd07d4337c279433b246421b92a4d16341 Mon Sep 17 00:00:00 2001 +From 8dbc2a0a112752ab85c688ba66e86e5598896aae Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Tue, 4 May 2021 10:12:39 +0200 -Subject: [PATCH 18/19] Fix Flickable wheel velocity calculation +Subject: [PATCH 15/18] Fix Flickable wheel velocity calculation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -90,7 +90,7 @@ Reviewed-by: Richard Moe Gustavsen 5 files changed, 107 insertions(+), 31 deletions(-) diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp -index 9a68be4c49..efb2f11d02 100644 +index e12e85db64..9eea0e1487 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -263,7 +263,8 @@ QQuickFlickablePrivate::QQuickFlickablePrivate() @@ -240,7 +240,7 @@ index 9a68be4c49..efb2f11d02 100644 } void QQuickFlickable::viewportMoved(Qt::Orientations orient) -@@ -2491,9 +2512,23 @@ void QQuickFlickable::setMaximumFlickVelocity(qreal v) +@@ -2504,9 +2525,23 @@ void QQuickFlickable::setMaximumFlickVelocity(qreal v) /*! \qmlproperty real QtQuick::Flickable::flickDeceleration @@ -267,7 +267,7 @@ index 9a68be4c49..efb2f11d02 100644 */ qreal QQuickFlickable::flickDeceleration() const { -@@ -2506,7 +2541,7 @@ void QQuickFlickable::setFlickDeceleration(qreal deceleration) +@@ -2519,7 +2554,7 @@ void QQuickFlickable::setFlickDeceleration(qreal deceleration) Q_D(QQuickFlickable); if (deceleration == d->deceleration) return; @@ -419,5 +419,5 @@ index 9e84261687..e69d6207a9 100644 Component.onCompleted: { -- -2.36.1 +2.37.3 diff --git a/0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch b/0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch similarity index 79% rename from 0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch rename to 0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch index 0ee7d82b9df109c9368bee95dbbb3d537a196cd4..8eb6c76c39a7ff039a33cc232b05fa6c429fd06e 100644 --- a/0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch +++ b/0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch @@ -1,14 +1,14 @@ -From c47f3d7b227c9bc86ca1702ae3291a62c2116cfa Mon Sep 17 00:00:00 2001 +From 46e932d87ffd6b2437b0411dd792112f5d4380fa Mon Sep 17 00:00:00 2001 From: Wolfgang Frisch Date: Thu, 19 May 2022 00:55:50 +0200 -Subject: [PATCH 19/19] Fix Flickable with QTBUG-56075 patch applied +Subject: [PATCH 16/18] Fix Flickable with QTBUG-56075 patch applied --- src/quick/items/qquickflickable.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp -index efb2f11d02..2a5b16c31a 100644 +index 9eea0e1487..2fa3b7142c 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -62,6 +62,8 @@ @@ -21,5 +21,5 @@ index efb2f11d02..2a5b16c31a 100644 // FlickThreshold determines how far the "mouse" must have moved // before we perform a flick. -- -2.36.1 +2.37.3 diff --git a/0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch b/0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch new file mode 100644 index 0000000000000000000000000000000000000000..e7c8df8e378fee9b9c066e85d23d69cf0f2997bc --- /dev/null +++ b/0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch @@ -0,0 +1,38 @@ +From 10d77845723f1e7fa60bbb0f60f708949f3a538c Mon Sep 17 00:00:00 2001 +From: Tony Leinonen +Date: Thu, 21 Oct 2021 14:44:02 +0300 +Subject: [PATCH 17/18] 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 13e7b87049..c8ea286d3e 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.37.3 + diff --git a/0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch b/0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch new file mode 100644 index 0000000000000000000000000000000000000000..d51482e96b70cb1e10ccc5325e4c27c477e48ee9 --- /dev/null +++ b/0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch @@ -0,0 +1,94 @@ +From 45d43c04088efb8346979f633f72bb1f23183461 Mon Sep 17 00:00:00 2001 +From: Mitch Curtis +Date: Thu, 4 Nov 2021 10:41:28 +0100 +Subject: [PATCH 18/18] Revert "Fix ListView.isCurrentItem when used with + DelegateModel" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit d9f9d773e92940786f159897623618f3bf6bcf0f. + +It causes a heap-use-after-free in tst_swipeview.qml. + +Task-number: QTBUG-97423 +Pick-to: 5.15 6.1 6.2 +Change-Id: I42e9831ae1399a010df28c39496a7778121f5e35 +Reviewed-by: Jan Arve Sæther +Reviewed-by: Oliver Eftevaag +(cherry picked from commit 5d656b31eb371c9e0bb97c558f9193b08471f1d7) +--- + src/quick/items/qquickitemview.cpp | 2 -- + .../quick/qquicklistview/data/qtbug86744.qml | 21 ------------------- + .../qquicklistview/tst_qquicklistview.cpp | 14 ------------- + 3 files changed, 37 deletions(-) + delete mode 100644 tests/auto/quick/qquicklistview/data/qtbug86744.qml + +diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp +index c8ea286d3e..f8ad168a17 100644 +--- a/src/quick/items/qquickitemview.cpp ++++ b/src/quick/items/qquickitemview.cpp +@@ -2402,8 +2402,6 @@ void QQuickItemView::createdItem(int index, QObject* object) + d->repositionPackageItemAt(item, index); + else if (index == d->currentIndex) + d->updateCurrent(index); +- } else if (index == d->currentIndex) { +- d->updateCurrent(index); + } + } + +diff --git a/tests/auto/quick/qquicklistview/data/qtbug86744.qml b/tests/auto/quick/qquicklistview/data/qtbug86744.qml +deleted file mode 100644 +index 6dc82d57eb..0000000000 +--- a/tests/auto/quick/qquicklistview/data/qtbug86744.qml ++++ /dev/null +@@ -1,21 +0,0 @@ +-import QtQuick 2.15 +-import QtQml.Models 2.15 +- +-Item { +- height: 200 +- width: 100 +- DelegateModel { +- id: dm +- model: 2 +- delegate: Item { +- width: 100; height: 20 +- property bool isCurrent: ListView.isCurrentItem +- } +- } +- ListView { +- objectName: "listView" +- model: dm +- currentIndex: 1 +- anchors.fill: parent +- } +-} +diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +index df329f8318..b564fd3ba5 100644 +--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp ++++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +@@ -10201,20 +10201,6 @@ void tst_QQuickListView::dragDelegateWithMouseArea_data() + } + } + +-void tst_QQuickListView::isCurrentItem_DelegateModel() +-{ +- QScopedPointer window(createView()); +- window->setSource(testFileUrl("qtbug86744.qml")); +- window->resize(640, 480); +- window->show(); +- QVERIFY(QTest::qWaitForWindowExposed(window.data())); +- +- QQuickListView* listView = window->rootObject()->findChild("listView"); +- QVERIFY(listView); +- QVariant value = listView->itemAtIndex(1)->property("isCurrent"); +- QVERIFY(value.toBool() == true); +-} +- + QTEST_MAIN(tst_QQuickListView) + + #include "tst_qquicklistview.moc" +-- +2.37.3 + diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec index 529f0d2a21c5719df8e773803cb41e3a5b45d109..3c898c251a2c1219ac15ffecb9d7a65e586ddab4 100644 --- a/qt5-qtdeclarative.spec +++ b/qt5-qtdeclarative.spec @@ -5,7 +5,7 @@ Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} -Version: 5.15.5 +Version: 5.15.7 Release: %{anolis_release}%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -17,27 +17,25 @@ Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submod ## upstream patches ## repo: https://invent.kde.org/qt/qt/qtdeclarative ## branch: kde/5.15 -## git format-patch v5.15.5-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-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch -Patch5: 0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch -Patch6: 0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch -Patch7: 0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch -Patch8: 0008-Fix-distorted-text-with-subpixel-matrix-translation.patch -Patch9: 0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch -Patch10: 0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch -Patch11: 0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch -Patch12: 0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch -Patch13: 0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch -Patch14: 0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch -Patch15: 0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch -Patch16: 0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch -Patch17: 0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch -Patch18: 0018-Fix-Flickable-wheel-velocity-calculation.patch -Patch19: 0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch - +## git format-patch v5.15.7-lts-lgpl +Patch01: 0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch +Patch02: 0002-Support-apos-in-styled-text.patch +Patch03: 0003-Remove-unused-QPointer-QQuickPointerMask.patch +Patch04: 0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch +Patch05: 0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch +Patch06: 0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch +Patch07: 0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch +Patch08: 0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch +Patch09: 0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch +Patch10: 0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch +Patch11: 0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch +Patch12: 0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch +Patch13: 0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch +Patch14: 0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch +Patch15: 0015-Fix-Flickable-wheel-velocity-calculation.patch +Patch16: 0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch +Patch17: 0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch +Patch18: 0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch ## upstreamable patches Patch100: %{name}-gcc11.patch @@ -55,7 +53,7 @@ BuildRequires: gcc-c++ BuildRequires: qt5-rpm-macros BuildRequires: qt5-qtbase-devel >= %{version} BuildRequires: qt5-qtbase-private-devel -%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} +%{?_qt5:Requires: %{_qt5} = %{_qt5_version}} BuildRequires: python%{python3_pkgversion} %if 0%{?bootstrap} @@ -78,20 +76,20 @@ Summary: Development files for %{name} Obsoletes: qt5-qtjsbackend-devel < 5.2.0 Obsoletes: qt5-qtdeclarative-render2d-devel < 5.7.1-10 Provides: %{name}-private-devel = %{version}-%{release} -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: qt5-qtbase-devel%{?_isa} +Requires: %{name} = %{version}-%{release} +Requires: qt5-qtbase-devel %description devel %{summary}. %package static Summary: Static library files for %{name} -Requires: %{name}-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-devel = %{version}-%{release} %description static %{summary}. %package examples Summary: Programming examples for %{name} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name} = %{version}-%{release} %description examples %{summary}. @@ -161,8 +159,6 @@ make check -k -C tests ||: %endif -%ldconfig_scriptlets - %files %license LICENSE.LGPL* %{_qt5_libdir}/libQt5Qml.so.5* @@ -188,15 +184,11 @@ make check -k -C tests ||: %{_qt5_libdir}/libQt5QmlWorkerScript.prl %{_qt5_libdir}/libQt5Quick*.so %{_qt5_libdir}/libQt5Quick*.prl -%dir %{_qt5_libdir}/cmake/Qt5Quick*/ -%{_qt5_libdir}/cmake/Qt5*/Qt5*Config*.cmake +%{_qt5_libdir}/cmake/* %{_qt5_libdir}/metatypes/qt5*_metatypes.json %{_qt5_libdir}/pkgconfig/Qt5*.pc %{_qt5_archdatadir}/mkspecs/modules/*.pri %{_qt5_archdatadir}/mkspecs/features/*.prf -%dir %{_qt5_libdir}/cmake/Qt5Qml/ -%{_qt5_libdir}/cmake/Qt5Qml/Qt5Qml_*Factory.cmake -%{_qt5_libdir}/cmake/Qt5QmlImportScanner/ %files static %{_qt5_libdir}/libQt5QmlDevTools.a @@ -213,5 +205,8 @@ make check -k -C tests ||: %changelog +* Wed Dec 7 2022 Funda Wang - 5.15.7-1 +- New version 5.15.7 + * Wed Jul 27 2022 Chunmei Xu - 5.15.5-1 - init from upstream diff --git a/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch b/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch index e04dd9f201cfe3a1048b9b54250becc443e098d8..be22aed04c48f662400c541a6174edc85bc58e00 100644 --- a/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch +++ b/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch @@ -44,46 +44,3 @@ index 2b4ca9e2..f2feba2a 100644 if (d->hData.maxExtentDirty) { d->maxExtent = d->maxExtentForAxis(d->hData, true); -diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp -index a7aefbe4..afe5c5ac 100644 ---- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp -+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp -@@ -73,6 +73,8 @@ public: - tst_QQuickListView(); - - private slots: -+ // WARNING: please add new tests to tst_qquicklistview2; this file is too slow to work with. -+ - void init(); - void cleanupTestCase(); - // Test QAbstractItemModel model types -@@ -300,6 +302,8 @@ private slots: - void clickHeaderAndFooterWhenClip(); - void animatedDelegate(); - -+ // WARNING: please add new tests to tst_qquicklistview2; this file is too slow to work with. -+ - private: - template void items(const QUrl &source); - template void changed(const QUrl &source); -@@ -10109,6 +10113,8 @@ void tst_QQuickListView::animatedDelegate() - } - } - -+// WARNING: please add new tests to tst_qquicklistview2; this file is too slow to work with. -+ - QTEST_MAIN(tst_QQuickListView) - - #include "tst_qquicklistview.moc" -diff --git a/tests/auto/quick/quick.pro b/tests/auto/quick/quick.pro -index 45bcf8a9..00f7d64d 100644 ---- a/tests/auto/quick/quick.pro -+++ b/tests/auto/quick/quick.pro -@@ -67,6 +67,7 @@ QUICKTESTS += \ - qquickitem2 \ - qquickitemlayer \ - qquicklistview \ -+ qquicklistview2 \ - qquicktableview \ - qquickloader \ - qquickmousearea \ diff --git a/qtdeclarative-everywhere-opensource-src-5.15.5.tar.xz b/qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz similarity index 71% rename from qtdeclarative-everywhere-opensource-src-5.15.5.tar.xz rename to qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz index 9ed43886fae5f96eebb429e562b257f95dae0742..d367caf60e79b0fdae29aabd4b228abf772bec83 100644 Binary files a/qtdeclarative-everywhere-opensource-src-5.15.5.tar.xz and b/qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz differ