5.15.7
This commit is contained in:
parent
eb2f4bd1df
commit
936a9a8230
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,3 +11,4 @@
|
||||
/qtdeclarative-everywhere-opensource-src-5.15.4.tar.xz
|
||||
/qtdeclarative-everywhere-opensource-src-5.15.5.tar.xz
|
||||
/qtdeclarative-everywhere-opensource-src-5.15.6.tar.xz
|
||||
/qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 343649de778b8c338438e19991c2354d05ec5329 Mon Sep 17 00:00:00 2001
|
||||
From 43b6267d024afd655a8c0c8c833f71850d7a8bb9 Mon Sep 17 00:00:00 2001
|
||||
From: Albert Astals Cid <albert.astals.cid@kdab.com>
|
||||
Date: Fri, 21 May 2021 13:17:15 +0200
|
||||
Subject: [PATCH 01/20] Document that StyledText also supports and
|
||||
Subject: [PATCH 01/18] Document that StyledText also supports and
|
||||
"
|
||||
|
||||
Change-Id: I1715f8ae8ec8d0fbaf6dbe2b8663cc169da663cd
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 933f752d3223301cbcfe0adc496ffc4442dab5cb Mon Sep 17 00:00:00 2001
|
||||
From 8e28af8076873503bbf036487aaf7310407a2f11 Mon Sep 17 00:00:00 2001
|
||||
From: Albert Astals Cid <albert.astals.cid@kdab.com>
|
||||
Date: Fri, 21 May 2021 13:42:35 +0200
|
||||
Subject: [PATCH 02/20] Support ' in styled text
|
||||
Subject: [PATCH 02/18] Support ' in styled text
|
||||
|
||||
Pick-to: 6.1 5.15
|
||||
Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7ff3dc36c1bd518bcfaf890694cfea07178cf7f7 Mon Sep 17 00:00:00 2001
|
||||
From 0f3b328766038c1161f4f613a0bf3a4fcbdb4cef Mon Sep 17 00:00:00 2001
|
||||
From: Albert Astals Cid <albert.astals.cid@kdab.com>
|
||||
Date: Thu, 17 Jun 2021 16:32:28 +0200
|
||||
Subject: [PATCH 03/20] Remove unused QPointer<QQuickPointerMask>
|
||||
Subject: [PATCH 03/18] Remove unused QPointer<QQuickPointerMask>
|
||||
|
||||
Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
|
@ -1,43 +0,0 @@
|
||||
From 2e36092b74206315a637fd68eceb5e864e6dd0dd Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Shachnev <mitya57@gmail.com>
|
||||
Date: Wed, 18 Aug 2021 22:50:29 +0300
|
||||
Subject: [PATCH 04/20] Include <limits> in Yarr.h to fix build with GCC 11
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- <limits.h> (aka <climits>) is needed for UINT_MAX macro constant.
|
||||
- <limits> 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<unsigned>::max();
|
||||
| ^~~~~~~~~~~~~~
|
||||
|
||||
Pick-to: 5.15 6.2
|
||||
Change-Id: I7cc9f7bc6624a52c8659f09034ab16064da5fd2f
|
||||
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
|
||||
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
||||
(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 <limits.h>
|
||||
+#include <limits>
|
||||
#include "YarrErrorCode.h"
|
||||
|
||||
namespace JSC { namespace Yarr {
|
||||
--
|
||||
2.37.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3fc1e9fa7aee33fe804f53653ec593caa810beb0 Mon Sep 17 00:00:00 2001
|
||||
From ad09b853a3a137127de847d4d6d55f73ab09899d Mon Sep 17 00:00:00 2001
|
||||
From: Aleix Pol <aleixpol@kde.org>
|
||||
Date: Thu, 23 Sep 2021 03:43:04 +0200
|
||||
Subject: [PATCH 06/20] 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
|
@ -1,7 +1,7 @@
|
||||
From aabe4e4cb74855205a5c7fa3f1dff4fea7fe05af Mon Sep 17 00:00:00 2001
|
||||
From 55caf921033dc1f310c1d370a046908cb0a6bc57 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Sun, 10 Oct 2021 21:04:21 +0300
|
||||
Subject: [PATCH 07/20] 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.
|
@ -1,112 +0,0 @@
|
||||
From 412bc857ee5cc43671f2c003af50c6393ebb6592 Mon Sep 17 00:00:00 2001
|
||||
From: Aleix Pol <aleixpol@kde.org>
|
||||
Date: Tue, 21 Sep 2021 00:10:26 +0200
|
||||
Subject: [PATCH 05/20] 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 <ulf.hermann@qt.io>
|
||||
(cherry picked from commit e78c068700fa74ab3aca6a23ab2450563b1c3a5c)
|
||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
||||
---
|
||||
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<QQmlError>)
|
||||
@@ -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<QQuickLoader *>();
|
||||
+ 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.37.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 783cb960224ecd984bb585b5633bacc3ba9b6391 Mon Sep 17 00:00:00 2001
|
||||
From 1cb0de43684c7f23cd121d48ebd84a9da688c8ef Mon Sep 17 00:00:00 2001
|
||||
From: Laszlo Agocs <laszlo.agocs@qt.io>
|
||||
Date: Mon, 11 Oct 2021 15:37:33 +0200
|
||||
Subject: [PATCH 09/20] 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
|
@ -1,7 +1,7 @@
|
||||
From b03b25f417d1db2a43e2df39a6fb355f993a341d 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?= <jan-arve.saether@qt.io>
|
||||
Date: Thu, 3 Sep 2020 10:51:01 +0200
|
||||
Subject: [PATCH 10/20] 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.
|
@ -1,483 +0,0 @@
|
||||
From 6b86df958de8c887e8685183e068bb200e357785 Mon Sep 17 00:00:00 2001
|
||||
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
Date: Tue, 12 Oct 2021 13:13:01 +0200
|
||||
Subject: [PATCH 08/20] 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 <eirik.aavitsland@qt.io>
|
||||
(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<QSGTextMaskMaterial *>(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<QSGTextMaskMaterial *>(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<QSGTextMaskMaterial *>(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<QSGStyledTextMaterial *>(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.37.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From da454326a35facfe70b0f672b3d42fed9804607b Mon Sep 17 00:00:00 2001
|
||||
From ad102f786a12d0cc139bfbebea8edbab3dd8206d Mon Sep 17 00:00:00 2001
|
||||
From: Albert Astals Cid <aacid@kde.org>
|
||||
Date: Tue, 16 Nov 2021 22:43:37 +0100
|
||||
Subject: [PATCH 11/20] 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.
|
@ -1,7 +1,7 @@
|
||||
From a3344d5b32e36e513de18eb3685652cd29d5ef93 Mon Sep 17 00:00:00 2001
|
||||
From 2d11778ce9348716ce936ce11c89ced58d8ec188 Mon Sep 17 00:00:00 2001
|
||||
From: Marc Mutz <marc.mutz@qt.io>
|
||||
Date: Tue, 21 Dec 2021 09:20:17 +0100
|
||||
Subject: [PATCH 12/20] QQmlJs::FixedPoolArray: fix UB (precondition violation)
|
||||
Subject: [PATCH 09/18] QQmlJs::FixedPoolArray: fix UB (precondition violation)
|
||||
in allocate()
|
||||
|
||||
Says ubsan:
|
@ -1,7 +1,7 @@
|
||||
From 757782a0a62b90b223e6e008287b4cafc91beff1 Mon Sep 17 00:00:00 2001
|
||||
From eb04ee7e02c5e7a2b84b129c09f13025242688d6 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hermann <ulf.hermann@qt.io>
|
||||
Date: Thu, 3 Feb 2022 10:02:06 +0100
|
||||
Subject: [PATCH 13/20] 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
|
@ -1,7 +1,7 @@
|
||||
From b4b283555f446ecfecb3f73f620c9ced2b261031 Mon Sep 17 00:00:00 2001
|
||||
From 436f3c0550f64b4cb629480a6b7ceb1381f30501 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Sat, 29 Jan 2022 21:59:33 +0200
|
||||
Subject: [PATCH 14/20] 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.
|
@ -1,7 +1,7 @@
|
||||
From 731025928d89403dbe8cdc79c40dddeb8d68a7e1 Mon Sep 17 00:00:00 2001
|
||||
From 74c8c421763597f778313ea976fffdc03183226b Mon Sep 17 00:00:00 2001
|
||||
From: Fabian Kosmale <fabian.kosmale@qt.io>
|
||||
Date: Wed, 4 May 2022 09:10:54 +0200
|
||||
Subject: [PATCH 15/20] 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 <volker.hilsheimer@qt.io>
|
||||
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 64123c82c4..aede212126 100644
|
||||
index 75f1457816..9de244ed9e 100644
|
||||
--- a/src/quick/items/qquickitem.cpp
|
||||
+++ b/src/quick/items/qquickitem.cpp
|
||||
@@ -59,6 +59,7 @@
|
@ -1,7 +1,7 @@
|
||||
From 920c4e95b85f7f06b58ac1016ca01ecb4043e755 Mon Sep 17 00:00:00 2001
|
||||
From 76113c63af23d516f488f5e6b9062ca97e062e9e Mon Sep 17 00:00:00 2001
|
||||
From: Marc Mutz <marc.mutz@kdab.com>
|
||||
Date: Tue, 16 Jul 2019 11:23:37 +0200
|
||||
Subject: [PATCH 16/20] 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
|
@ -1,7 +1,7 @@
|
||||
From 98e65ca71e389ad3e36aa3461ad4617815f9cd9a Mon Sep 17 00:00:00 2001
|
||||
From 985358efb1e60a8ff493da4d6ca9056f63dc9982 Mon Sep 17 00:00:00 2001
|
||||
From: Marc Mutz <marc.mutz@kdab.com>
|
||||
Date: Tue, 16 Jul 2019 11:31:01 +0200
|
||||
Subject: [PATCH 17/20] 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
|
@ -1,7 +1,7 @@
|
||||
From 79fa06279d26de7da111ddc88201324e55d68e8a Mon Sep 17 00:00:00 2001
|
||||
From 8dbc2a0a112752ab85c688ba66e86e5598896aae Mon Sep 17 00:00:00 2001
|
||||
From: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
Date: Tue, 4 May 2021 10:12:39 +0200
|
||||
Subject: [PATCH 18/20] 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 <richard.gustavsen@qt.io>
|
||||
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;
|
@ -1,14 +1,14 @@
|
||||
From e1ecf1c4e09b2f1d04f94971771019e59a50679f Mon Sep 17 00:00:00 2001
|
||||
From 46e932d87ffd6b2437b0411dd792112f5d4380fa Mon Sep 17 00:00:00 2001
|
||||
From: Wolfgang Frisch <wfrisch@riseup.net>
|
||||
Date: Thu, 19 May 2022 00:55:50 +0200
|
||||
Subject: [PATCH 19/20] 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 @@
|
@ -1,7 +1,7 @@
|
||||
From b3aaf1482c48bbc0ca4f7c7934597c055afe4b6a Mon Sep 17 00:00:00 2001
|
||||
From 10d77845723f1e7fa60bbb0f60f708949f3a538c Mon Sep 17 00:00:00 2001
|
||||
From: Tony Leinonen <tony.leinonen@qt.io>
|
||||
Date: Thu, 21 Oct 2021 14:44:02 +0300
|
||||
Subject: [PATCH 20/20] Reset currentChanges if currentChanges is active when
|
||||
Subject: [PATCH 17/18] Reset currentChanges if currentChanges is active when
|
||||
refilling listView
|
||||
|
||||
currentIndex was not getting updated because itemViewChangeSet was left
|
||||
@ -21,7 +21,7 @@ Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
||||
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
|
||||
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)
|
@ -0,0 +1,94 @@
|
||||
From 45d43c04088efb8346979f633f72bb1f23183461 Mon Sep 17 00:00:00 2001
|
||||
From: Mitch Curtis <mitch.curtis@qt.io>
|
||||
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 <jan-arve.saether@qt.io>
|
||||
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
||||
(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<QQuickView> window(createView());
|
||||
- window->setSource(testFileUrl("qtbug86744.qml"));
|
||||
- window->resize(640, 480);
|
||||
- window->show();
|
||||
- QVERIFY(QTest::qWaitForWindowExposed(window.data()));
|
||||
-
|
||||
- QQuickListView* listView = window->rootObject()->findChild<QQuickListView*>("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
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
Summary: Qt5 - QtDeclarative component
|
||||
Name: qt5-%{qt_module}
|
||||
Version: 5.15.6
|
||||
Version: 5.15.7
|
||||
Release: 1%{?dist}
|
||||
|
||||
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
|
||||
@ -27,27 +27,26 @@ Source5: qv4global_p-multilib.h
|
||||
## upstream patches
|
||||
## repo: https://invent.kde.org/qt/qt/qtdeclarative
|
||||
## branch: kde/5.15
|
||||
## git format-patch v5.15.6-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
|
||||
Patch0: 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
|
||||
Patch20: 0020-Reset-currentChanges-if-currentChanges-is-active-whe.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
|
||||
@ -230,6 +229,9 @@ make check -k -C tests ||:
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Oct 31 2022 Jan Grulich <jgrulich@redhat.com> - 5.15.7-1
|
||||
- 5.15.7
|
||||
|
||||
* Tue Sep 20 2022 Jan Grulich <jgrulich@redhat.com> - 5.15.6-1
|
||||
- 5.15.6
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (qtdeclarative-everywhere-opensource-src-5.15.6.tar.xz) = a4824b6ec2de5e78819b726850767db6d4280208d6cc985219f4c33b6b0dcd6194557f32b577df97b0596d157190aa9c00e99bf6879554936a356fa7afe8a7d5
|
||||
SHA512 (qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz) = 909721a7c756ad3f55fa30b539ddd7f459449edc599883a4e04acbe6f1cecaf44b3a5f2b3b17adb83adaf8cd3e1e5e7e09829b30b0df3dacb1e203892b996508
|
||||
|
Loading…
Reference in New Issue
Block a user