* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2015-08-24 1:28 Davide Pesavento
0 siblings, 0 replies; 8+ messages in thread
From: Davide Pesavento @ 2015-08-24 1:28 UTC (permalink / raw
To: gentoo-commits
commit: 9836d7172b640ba1ea9192785e08e6bf8ab7b20c
Author: Davide Pesavento <pesa <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 24 00:51:58 2015 +0000
Commit: Davide Pesavento <pesa <AT> gentoo <DOT> org>
CommitDate: Mon Aug 24 01:28:21 2015 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9836d717
dev-qt/qtdeclarative: add USE=jit, enabled by default.
The JIT cannot be used on hardened/PAX kernels. Let people disable it.
Gentoo-Bug: 551318
Package-Manager: portage-2.2.20.1
.../files/qtdeclarative-5.4.2-disable-jit.patch | 18 ++++++++
dev-qt/qtdeclarative/qtdeclarative-5.4.2-r1.ebuild | 48 ++++++++++++++++++++++
2 files changed, 66 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.4.2-disable-jit.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.4.2-disable-jit.patch
new file mode 100644
index 0000000..7799ef7
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.4.2-disable-jit.patch
@@ -0,0 +1,18 @@
+diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h
+index 4b08194..224ddb1 100644
+--- a/src/qml/jsruntime/qv4global_p.h
++++ b/src/qml/jsruntime/qv4global_p.h
+@@ -96,8 +96,13 @@ inline double trunc(double d) { return d > 0 ? floor(d) : ceil(d); }
+ # undef V4_ENABLE_JIT
+ #endif
+ #endif
+
++// Gentoo note: disable the JIT due to USE="-jit"
++#ifdef V4_ENABLE_JIT
++#undef V4_ENABLE_JIT
++#endif
++
+ // Do certain things depending on whether the JIT is enabled or disabled
+
+ #ifdef V4_ENABLE_JIT
+ #define ENABLE_YARR_JIT 1
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.4.2-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.4.2-r1.ebuild
new file mode 100644
index 0000000..6e560db
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.4.2-r1.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc64 ~x86"
+fi
+
+IUSE="gles2 +jit localstorage +widgets xml"
+
+# qtgui[gles2=] is needed because of bug 504322
+DEPEND="
+ >=dev-qt/qtcore-${PV}:5
+ >=dev-qt/qtgui-${PV}:5[gles2=]
+ >=dev-qt/qtnetwork-${PV}:5
+ >=dev-qt/qttest-${PV}:5
+ localstorage? ( >=dev-qt/qtsql-${PV}:5 )
+ widgets? ( >=dev-qt/qtwidgets-${PV}:5[gles2=] )
+ xml? ( >=dev-qt/qtxmlpatterns-${PV}:5 )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ use jit || epatch "${FILESDIR}"/${PN}-5.4.2-disable-jit.patch
+
+ use localstorage || sed -i -e '/localstorage/d' \
+ src/imports/imports.pro || die
+
+ use widgets || sed -i -e 's/contains(QT_CONFIG, no-widgets)/true/' \
+ src/qmltest/qmltest.pro || die
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt_use_disable_mod xml xmlpatterns \
+ src/imports/imports.pro \
+ tests/auto/quick/quick.pro
+
+ qt5-build_src_prepare
+}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2019-11-20 21:21 Andreas Sturmlechner
0 siblings, 0 replies; 8+ messages in thread
From: Andreas Sturmlechner @ 2019-11-20 21:21 UTC (permalink / raw
To: gentoo-commits
commit: aa184cc3e6b9f60fdfcc0ac5f412bf61bc4f4f97
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 16 12:49:33 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Nov 20 21:20:42 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aa184cc3
dev-qt/qtdeclarative: Fix application deadlocks on exit
Package-Manager: Portage-2.3.79, Repoman-2.3.17
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...qtdeclarative-5.13.2-fix-deadlock-on-exit.patch | 112 +++++++++++++++++++++
.../qtdeclarative/qtdeclarative-5.13.2-r1.ebuild | 1 +
2 files changed, 113 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.13.2-fix-deadlock-on-exit.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.13.2-fix-deadlock-on-exit.patch
new file mode 100644
index 00000000000..09c4ad831c5
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.13.2-fix-deadlock-on-exit.patch
@@ -0,0 +1,112 @@
+From 73ad6e87bbeceea5830ab3a6b3dc66fa99e30f45 Mon Sep 17 00:00:00 2001
+From: Fabian Kosmale <fabian.kosmale@qt.io>
+Date: Mon, 28 Oct 2019 13:41:11 +0100
+Subject: [PATCH] QQuickItem::setParentItem: add child earlier
+
+Calling (de)refWindow can trigger QQuickItem::windowChanged, which in turn
+can call a user defined windowChanged handler. If that signal handler
+were to call setParentItem, we would encounter an inconsistent state:
+The item already has its parent set, but that parent would lack the item
+in its children list (as we would only call refWindow at a later point).
+
+Fixes: QTBUG-79573
+Fixes: QTBUG-73439
+Change-Id: I46adaa54a0521b5cd7f37810b3dd1a206e6a09c6
+Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
+---
+ src/quick/items/qquickitem.cpp | 21 +++++++++++++++++----
+ .../qquickitem/data/setParentInWindowChange.qml | 12 ++++++++++++
+ tests/auto/quick/qquickitem/tst_qquickitem.cpp | 8 ++++++++
+ 3 files changed, 37 insertions(+), 4 deletions(-)
+ create mode 100644 tests/auto/quick/qquickitem/data/setParentInWindowChange.qml
+
+diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
+index 396012e1e67..26f02aeed7f 100644
+--- a/src/quick/items/qquickitem.cpp
++++ b/src/quick/items/qquickitem.cpp
+@@ -2748,22 +2748,35 @@ void QQuickItem::setParentItem(QQuickItem *parentItem)
+ }
+
+ QQuickWindow *parentWindow = parentItem ? QQuickItemPrivate::get(parentItem)->window : nullptr;
++ bool alreadyAddedChild = false;
+ if (d->window == parentWindow) {
+ // Avoid freeing and reallocating resources if the window stays the same.
+ d->parentItem = parentItem;
+ } else {
+- if (d->window)
+- d->derefWindow();
++ auto oldParentItem = d->parentItem;
+ d->parentItem = parentItem;
++ if (d->parentItem) {
++ QQuickItemPrivate::get(d->parentItem)->addChild(this);
++ alreadyAddedChild = true;
++ }
++ if (d->window) {
++ d->derefWindow();
++ // as we potentially changed d->parentWindow above
++ // the check in derefWindow could not work
++ // thus, we redo it here with the old parent
++ if (!oldParentItem) {
++ QQuickWindowPrivate::get(d->window)->parentlessItems.remove(this);
++ }
++ }
+ if (parentWindow)
+ d->refWindow(parentWindow);
+ }
+
+ d->dirty(QQuickItemPrivate::ParentChanged);
+
+- if (d->parentItem)
++ if (d->parentItem && !alreadyAddedChild)
+ QQuickItemPrivate::get(d->parentItem)->addChild(this);
+- else if (d->window)
++ else if (d->window && !alreadyAddedChild)
+ QQuickWindowPrivate::get(d->window)->parentlessItems.insert(this);
+
+ d->setEffectiveVisibleRecur(d->calcEffectiveVisible());
+diff --git a/tests/auto/quick/qquickitem/data/setParentInWindowChange.qml b/tests/auto/quick/qquickitem/data/setParentInWindowChange.qml
+new file mode 100644
+index 00000000000..d68b7adb72a
+--- /dev/null
++++ b/tests/auto/quick/qquickitem/data/setParentInWindowChange.qml
+@@ -0,0 +1,12 @@
++import QtQuick 2.12
++
++Rectangle {
++ width: 800
++ height: 600
++ Item {
++ id: it
++ onWindowChanged: () => it.parent = newParent
++ }
++
++ Item { id: newParent }
++}
+diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
+index 7e132f97b67..9ce9766c925 100644
+--- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp
++++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
+@@ -197,6 +197,8 @@ private slots:
+ void qtBug60123();
+ #endif
+
++ void setParentCalledInOnWindowChanged();
++
+ private:
+
+ enum PaintOrderOp {
+@@ -2145,6 +2147,12 @@ void tst_qquickitem::qtBug60123()
+ activateWindowAndTestPress(&window);
+ }
+ #endif
++void tst_qquickitem::setParentCalledInOnWindowChanged()
++{
++ QQuickView view;
++ view.setSource(testFileUrl("setParentInWindowChange.qml"));
++ QVERIFY(ensureFocus(&view)); // should not crash
++}
+
+ QTEST_MAIN(tst_qquickitem)
+
+--
+2.16.3
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild
index 90abd95d64f..24def17bec0 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild
@@ -29,6 +29,7 @@ RDEPEND="${DEPEND}
PATCHES=(
"${FILESDIR}/${P}-read-QQmlPropertyMap-correctly.patch" # QTBUG-79614
+ "${FILESDIR}/${P}-fix-deadlock-on-exit.patch" # QTBUG-79573
)
src_prepare() {
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2020-05-17 0:24 Andreas Sturmlechner
0 siblings, 0 replies; 8+ messages in thread
From: Andreas Sturmlechner @ 2020-05-17 0:24 UTC (permalink / raw
To: gentoo-commits
commit: f499bdec65168fad8f0d12452210daf4bee338e8
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat May 16 23:55:50 2020 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun May 17 00:22:30 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f499bdec
dev-qt/qtdeclarative: QQuickItemView: Fix max(X/Y)Extent()
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=419514
QTBUG: https://bugreports.qt.io/browse/QTBUG-83890
Bug: https://bugs.gentoo.org/716992
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...ve-5.14.2-QQuickItemView-fix-maxXY-extent.patch | 42 +++++++++++++++++
.../qtdeclarative/qtdeclarative-5.14.2-r1.ebuild | 55 ++++++++++++++++++++++
2 files changed, 97 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-QQuickItemView-fix-maxXY-extent.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-QQuickItemView-fix-maxXY-extent.patch
new file mode 100644
index 00000000000..c9ccb2116e7
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-QQuickItemView-fix-maxXY-extent.patch
@@ -0,0 +1,42 @@
+From cc5387ad22ca503d167fd66e2429107d45b937af Mon Sep 17 00:00:00 2001
+From: David Redondo <qt@david-redondo.de>
+Date: Wed, 13 May 2020 11:04:23 +0200
+Subject: [PATCH] QQuickItemView: Fix max(X/Y)Extent()
+
+QQuickFlickable maxXExtent() and maxYExtent() return the amount of space
+that is not shown when inside a ScrollView. QQuickItemView however just
+returned width() if vertical and height() if horizontal. In these cases
+just defer to the QQuickFlickable base implementation like minXExtent()
+and minYExtent() already do.
+
+Fixes: QTBUG-83890
+Pick-to: 5.15
+Change-Id: I7f4060c2f46ae07611bedceca0d322c5f7f6affb
+---
+ src/quick/items/qquickitemview.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
+index 7fb392233e4..ab130ac6857 100644
+--- a/src/quick/items/qquickitemview.cpp
++++ b/src/quick/items/qquickitemview.cpp
+@@ -1393,7 +1393,7 @@ qreal QQuickItemView::maxYExtent() const
+ {
+ Q_D(const QQuickItemView);
+ if (d->layoutOrientation() == Qt::Horizontal)
+- return height();
++ return QQuickFlickable::maxYExtent();
+
+ if (d->vData.maxExtentDirty) {
+ d->maxExtent = d->maxExtentForAxis(d->vData, false);
+@@ -1421,7 +1421,7 @@ qreal QQuickItemView::maxXExtent() const
+ {
+ Q_D(const QQuickItemView);
+ if (d->layoutOrientation() == Qt::Vertical)
+- return width();
++ return QQuickFlickable::maxXExtent();
+
+ if (d->hData.maxExtentDirty) {
+ d->maxExtent = d->maxExtentForAxis(d->hData, true);
+--
+2.16.3
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r1.ebuild
new file mode 100644
index 00000000000..5eb5c48069c
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2009-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+inherit python-any-r1 qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE="gles2-only +jit localstorage vulkan +widgets"
+
+BDEPEND="${PYTHON_DEPS}"
+# qtgui[gles2-only=] is needed because of bug 504322
+DEPEND="
+ ~dev-qt/qtcore-${PV}
+ ~dev-qt/qtgui-${PV}[gles2-only=,vulkan=]
+ ~dev-qt/qtnetwork-${PV}
+ ~dev-qt/qttest-${PV}
+ localstorage? ( ~dev-qt/qtsql-${PV} )
+ widgets? ( ~dev-qt/qtwidgets-${PV}[gles2-only=] )
+"
+RDEPEND="${DEPEND}
+ !<dev-qt/qtquickcontrols-5.7:5
+"
+
+PATCHES=("${FILESDIR}/${P}-QQuickItemView-fix-maxXY-extent.patch" ) # QTBUG-83890
+
+src_prepare() {
+ use jit || PATCHES+=("${FILESDIR}/${PN}-5.4.2-disable-jit.patch")
+
+ qt_use_disable_mod localstorage sql \
+ src/imports/imports.pro
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ src/qmltest/qmltest.pro \
+ tests/auto/auto.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt5-build_src_prepare
+}
+
+src_configure() {
+ local myqmakeargs=(
+ --
+ -qml-debug
+ )
+ qt5-build_src_configure
+}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2020-05-18 6:20 Andreas Sturmlechner
0 siblings, 0 replies; 8+ messages in thread
From: Andreas Sturmlechner @ 2020-05-18 6:20 UTC (permalink / raw
To: gentoo-commits
commit: a620049c0bbf5ae9b456f175b279a11a035bcf9f
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun May 17 23:05:56 2020 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon May 18 06:17:42 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a620049c
dev-qt/qtdeclarative: Fix subpixel positioned text
QTBUG: https://bugreports.qt.io/browse/QTBUG-49646
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...ative-5.14.2-fix-subpixel-positioned-text.patch | 64 ++++++++++++++++++++++
.../qtdeclarative/qtdeclarative-5.14.2-r2.ebuild | 58 ++++++++++++++++++++
2 files changed, 122 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-fix-subpixel-positioned-text.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-fix-subpixel-positioned-text.patch
new file mode 100644
index 00000000000..23eaa7d5100
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-fix-subpixel-positioned-text.patch
@@ -0,0 +1,64 @@
+From e807f9d1d80559b8ff91f1c3cfdd755b3da56a6d Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Tue, 5 May 2020 11:36:24 +0200
+Subject: [PATCH] Fix subpixel positioned text with Text.NativeRendering
+
+We would be generating subpixel positioned glyphs based on the
+relative positions of the glyphs, ignoring the fractional part
+contributed by the origin of the text. So if the text origin was
+inside a pixel, the subpixel antialiasing would be wrong and we
+would see kerning errors.
+
+This was especially visible when using AlignHCenter on text
+with hinting disabled and resizing the item it was aligning to.
+
+Pick-to: 5.15
+Task-number: QTBUG-49646
+Change-Id: I0e709ba2b5d2440e34c94c6f819befe0a65a113a
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
+---
+ src/quick/scenegraph/qsgdefaultglyphnode_p.cpp | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
+index cfa645bfd03..f73b64f537f 100644
+--- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
++++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
+@@ -789,11 +789,12 @@ void QSGTextMaskMaterial::populate(const QPointF &p,
+ const QMargins &margins)
+ {
+ Q_ASSERT(m_font.isValid());
++ QPointF position(p.x(), p.y() - m_font.ascent());
+ QVector<QFixedPoint> fixedPointPositions;
+ const int glyphPositionsSize = glyphPositions.size();
+ fixedPointPositions.reserve(glyphPositionsSize);
+ for (int i=0; i < glyphPositionsSize; ++i)
+- fixedPointPositions.append(QFixedPoint::fromPointF(glyphPositions.at(i)));
++ fixedPointPositions.append(QFixedPoint::fromPointF(position + glyphPositions.at(i)));
+
+ QTextureGlyphCache *cache = glyphCache();
+
+@@ -815,18 +816,16 @@ void QSGTextMaskMaterial::populate(const QPointF &p,
+ Q_ASSERT(geometry->sizeOfVertex() == sizeof(QVector4D));
+ ushort *ip = geometry->indexDataAsUShort();
+
+- QPointF position(p.x(), p.y() - m_font.ascent());
+ bool supportsSubPixelPositions = fontD->fontEngine->supportsSubPixelPositions();
+ for (int i=0; i<glyphIndexes.size(); ++i) {
++ QPointF glyphPosition = glyphPositions.at(i) + position;
+ QFixed subPixelPosition;
+ if (supportsSubPixelPositions)
+- subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPositions.at(i).x()));
++ subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPosition.x()));
+
+ QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphIndexes.at(i), subPixelPosition);
+ const QTextureGlyphCache::Coord &c = cache->coords.value(glyph);
+
+- QPointF glyphPosition = glyphPositions.at(i) + position;
+-
+ // On a retina screen the glyph positions are not pre-scaled (as opposed to
+ // eg. the raster paint engine). To ensure that we get the same behavior as
+ // the raster engine (and CoreText itself) when it comes to rounding of the
+--
+2.16.3
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r2.ebuild
new file mode 100644
index 00000000000..77890662b25
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r2.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2009-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+inherit python-any-r1 qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE="gles2-only +jit localstorage vulkan +widgets"
+
+BDEPEND="${PYTHON_DEPS}"
+# qtgui[gles2-only=] is needed because of bug 504322
+DEPEND="
+ ~dev-qt/qtcore-${PV}
+ ~dev-qt/qtgui-${PV}[gles2-only=,vulkan=]
+ ~dev-qt/qtnetwork-${PV}
+ ~dev-qt/qttest-${PV}
+ localstorage? ( ~dev-qt/qtsql-${PV} )
+ widgets? ( ~dev-qt/qtwidgets-${PV}[gles2-only=] )
+"
+RDEPEND="${DEPEND}
+ !<dev-qt/qtquickcontrols-5.7:5
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-QQuickItemView-fix-maxXY-extent.patch" # QTBUG-83890
+ "${FILESDIR}/${P}-fix-subpixel-positioned-text.patch" # QTBUG-49646
+)
+
+src_prepare() {
+ use jit || PATCHES+=("${FILESDIR}/${PN}-5.4.2-disable-jit.patch")
+
+ qt_use_disable_mod localstorage sql \
+ src/imports/imports.pro
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ src/qmltest/qmltest.pro \
+ tests/auto/auto.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt5-build_src_prepare
+}
+
+src_configure() {
+ local myqmakeargs=(
+ --
+ -qml-debug
+ )
+ qt5-build_src_configure
+}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2020-06-10 17:53 Andreas Sturmlechner
0 siblings, 0 replies; 8+ messages in thread
From: Andreas Sturmlechner @ 2020-06-10 17:53 UTC (permalink / raw
To: gentoo-commits
commit: da0505d7b983832b3d6c981a30cc8984d153a5ac
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 9 19:44:56 2020 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Jun 10 17:52:30 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=da0505d7
dev-qt/qtdeclarative: Fix QQuickMouseArea get stuck in pressed state
Package-Manager: Portage-2.3.100, Repoman-2.3.22
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
....2-QQuickMouseArea-stuck-in-pressed-state.patch | 55 ++++++++++++++++++++
.../qtdeclarative/qtdeclarative-5.14.2-r3.ebuild | 59 ++++++++++++++++++++++
2 files changed, 114 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-QQuickMouseArea-stuck-in-pressed-state.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-QQuickMouseArea-stuck-in-pressed-state.patch
new file mode 100644
index 00000000000..1dd0ff1155d
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.14.2-QQuickMouseArea-stuck-in-pressed-state.patch
@@ -0,0 +1,55 @@
+From 8ace780b5aa298e3c01903bfd57f766a42209191 Mon Sep 17 00:00:00 2001
+From: Frederik Gladhorn <frederik.gladhorn@remarkable.com>
+Date: Sat, 28 Mar 2020 15:14:41 +0100
+Subject: [PATCH] Fix QQuickMouseArea getting stuck in pressed state when
+ hiding in press
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+In 78c1fcbc49f56463064eef738a475d9018357b24 we stopped giving the
+exclusive grab to hidden or disabled items with is good. But the change
+did not take into consideration how mouse area handles its internal
+state.
+
+As a simple example: A mouse area that would set itself hiddin in the
+press handler, would continue to have d->pressed == true, which means it
+would not react to any future press events.
+
+The fix is to let mouse area check in its change handler whether it has
+become invisible.
+The test also checks that enabled behaves the same way. There is no
+action needed, since mouse area does completely custom handling of
+enabled (maybe something to fix in Qt 6), disabling a mouse area doesn't
+disable its children for example, it doesn't invoke
+QQuickItem::setEnabled at all. Due to this circumventing the common
+behavior, by chance disabling a mouse area in the on pressed handler
+works.
+
+Fixes: QTBUG-74987
+Change-Id: Idb8499b3e5bcb744fbba203fdea5c46695bd5077
+Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
+---
+ src/quick/items/qquickmousearea.cpp | 6 ++++
+ 3 files changed, 80 insertions(+)
+ create mode 100644 tests/auto/quick/qquickmousearea/data/settingHiddenInPressUngrabs.qml
+
+diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
+index 368379f5c40..dc60712a9cd 100644
+--- a/src/quick/items/qquickmousearea.cpp
++++ b/src/quick/items/qquickmousearea.cpp
+@@ -1083,6 +1083,12 @@ void QQuickMouseArea::itemChange(ItemChange change, const ItemChangeData &value)
+ }
+ setHovered(!d->hovered);
+ }
++ if (d->pressed && (!isVisible())) {
++ // This happens when the mouse area sets itself disabled or hidden
++ // inside the press handler. In that case we should not keep the internal
++ // state as pressed, since we never became the mouse grabber.
++ ungrabMouse();
++ }
+ break;
+ default:
+ break;
+--
+2.16.3
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r3.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r3.ebuild
new file mode 100644
index 00000000000..71250b4c877
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.14.2-r3.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2009-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+inherit python-any-r1 qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE="gles2-only +jit localstorage vulkan +widgets"
+
+BDEPEND="${PYTHON_DEPS}"
+# qtgui[gles2-only=] is needed because of bug 504322
+DEPEND="
+ ~dev-qt/qtcore-${PV}
+ ~dev-qt/qtgui-${PV}[gles2-only=,vulkan=]
+ ~dev-qt/qtnetwork-${PV}
+ ~dev-qt/qttest-${PV}
+ localstorage? ( ~dev-qt/qtsql-${PV} )
+ widgets? ( ~dev-qt/qtwidgets-${PV}[gles2-only=] )
+"
+RDEPEND="${DEPEND}
+ !<dev-qt/qtquickcontrols-5.7:5
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-QQuickItemView-fix-maxXY-extent.patch" # QTBUG-83890
+ "${FILESDIR}/${P}-fix-subpixel-positioned-text.patch" # QTBUG-49646
+ "${FILESDIR}/${P}-QQuickMouseArea-stuck-in-pressed-state.patch" # QTBUG-74987
+)
+
+src_prepare() {
+ use jit || PATCHES+=("${FILESDIR}/${PN}-5.4.2-disable-jit.patch")
+
+ qt_use_disable_mod localstorage sql \
+ src/imports/imports.pro
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ src/qmltest/qmltest.pro \
+ tests/auto/auto.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt5-build_src_prepare
+}
+
+src_configure() {
+ local myqmakeargs=(
+ --
+ -qml-debug
+ )
+ qt5-build_src_configure
+}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2021-07-17 22:45 Yixun Lan
0 siblings, 0 replies; 8+ messages in thread
From: Yixun Lan @ 2021-07-17 22:45 UTC (permalink / raw
To: gentoo-commits
commit: 980dc7e8d6fd082c77650dc05051af0f7e1b8b3a
Author: Yixun Lan <dlan <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 17 15:18:56 2021 +0000
Commit: Yixun Lan <dlan <AT> gentoo <DOT> org>
CommitDate: Sat Jul 17 22:45:21 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=980dc7e8
dev-qt/qtdeclarative: riscv: fix missing atomic library
this will workaroud the error when build in ARCH=riscv,
tested with gcc-11
A likely better fix is to have qtcore detect the need for -latomic
at configure time and, if needed, link to it
Bug: https://bugs.gentoo.org/790689
Closes: https://github.com/gentoo/gentoo/pull/21689
Package-Manager: Portage-3.0.19, Repoman-3.0.3
Signed-off-by: Yixun Lan <dlan <AT> gentoo.org>
.../files/qtdeclarative-5.15.2-riscv-atomic.patch | 12 ++++++++++++
dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild | 1 +
2 files changed, 13 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.15.2-riscv-atomic.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.15.2-riscv-atomic.patch
new file mode 100644
index 00000000000..a619f3db833
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.15.2-riscv-atomic.patch
@@ -0,0 +1,12 @@
+diff --git a/src/qml/qml.pro b/src/qml/qml.pro
+index 7d5a92a..01f3b79 100644
+--- a/src/qml/qml.pro
++++ b/src/qml/qml.pro
+@@ -19,6 +19,7 @@ solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2
+
+ # Ensure this gcc optimization is switched off for mips platforms to avoid trouble with JIT.
+ gcc:isEqual(QT_ARCH, "mips"): QMAKE_CXXFLAGS += -fno-reorder-blocks
++gcc:isEqual(QT_ARCH, "riscv64"): LIBS += -latomic
+
+ DEFINES += QT_NO_FOREACH
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild
index ccbde5b669e..6b32fc222cd 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild
@@ -31,6 +31,7 @@ RDEPEND="${DEPEND}
PATCHES=(
"${FILESDIR}/${PN}-5.14.2-QQuickItemView-fix-maxXY-extent.patch" # QTBUG-83890
"${FILESDIR}/${P}-gcc11.patch" # bug 752093
+ "${FILESDIR}/${P}-riscv-atomic.patch" #bug 790689
)
src_prepare() {
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2024-10-08 17:46 Ionen Wolkens
0 siblings, 0 replies; 8+ messages in thread
From: Ionen Wolkens @ 2024-10-08 17:46 UTC (permalink / raw
To: gentoo-commits
commit: fdb02a790eb6d83107b919fece7a199b7e1ae00f
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 8 16:55:01 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Oct 8 17:44:32 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fdb02a79
dev-qt/qtdeclarative: backport fix for QTBUG-125053 + 129797 early
QTBUG-129797's hasn't been merged yet but should be soon and may
as well do it at same time.
May need to do another revbump later for QTBUG-129622 when there
is a fix though, but this may or may not take a while.
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.7.3-QTBUG-125053.patch | 259 +++++++++++++++++++++
.../files/qtdeclarative-6.8.0-QTBUG-129797.patch | 19 ++
...7.3-r1.ebuild => qtdeclarative-6.7.3-r2.ebuild} | 4 +
...-6.8.0.ebuild => qtdeclarative-6.8.0-r1.ebuild} | 5 +
4 files changed, 287 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-125053.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-125053.patch
new file mode 100644
index 000000000000..c1aa74599923
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-125053.patch
@@ -0,0 +1,259 @@
+https://bugreports.qt.io/browse/QTBUG-125053
+https://bugreports.qt.io/browse/QTBUG-127340
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/593122
+--- a/src/qmlmodels/qqmldelegatemodel.cpp
++++ b/src/qmlmodels/qqmldelegatemodel.cpp
+@@ -4,4 +4,6 @@
+ #include "qqmldelegatemodel_p_p.h"
+
++#include <QtCore/private/qabstractitemmodel_p.h>
++
+ #include <QtQml/qqmlinfo.h>
+
+@@ -168,5 +170,4 @@
+ , m_incubatorCleanupScheduled(false)
+ , m_waitingToFetchMore(false)
+- , m_maybeResetRoleNames(false)
+ , m_cacheItems(nullptr)
+ , m_items(nullptr)
+@@ -373,6 +374,4 @@
+ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(layoutChanged(QList<QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint)),
+ q, QQmlDelegateModel, SLOT(_q_layoutChanged(QList<QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint)));
+- QObject::connect(aim, &QAbstractItemModel::modelReset, q, &QQmlDelegateModel::handleModelReset);
+- QObject::connect(aim, &QAbstractItemModel::layoutChanged, q, &QQmlDelegateModel::_q_layoutChanged);
+ }
+
+@@ -404,6 +403,4 @@
+ QObject::disconnect(aim, SIGNAL(layoutChanged(QList<QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint)),
+ q, SLOT(_q_layoutChanged(QList<QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint)));
+- QObject::disconnect(aim, &QAbstractItemModel::modelReset, q, &QQmlDelegateModel::handleModelReset);
+- QObject::disconnect(aim, &QAbstractItemModel::layoutChanged, q, &QQmlDelegateModel::_q_layoutChanged);
+ }
+
+@@ -429,4 +426,19 @@
+ d->requestMoreIfNecessary();
+ }
++
++ // Since 837c2f18cd223707e7cedb213257b0158ea07146, we connect to modelAboutToBeReset
++ // rather than modelReset so that we can handle role name changes. _q_modelAboutToBeReset
++ // now connects modelReset to handleModelReset with a single shot connection instead.
++ // However, it's possible for user code to begin the reset before connectToAbstractItemModel is called
++ // (QTBUG-125053), in which case we connect to modelReset too late and handleModelReset is never called,
++ // resulting in delegates not being created in certain cases.
++ // So, we check at the earliest point we can if the model is in the process of being reset,
++ // and if so, connect modelReset to handleModelReset.
++ if (d->m_adaptorModel.adaptsAim()) {
++ auto *aim = d->m_adaptorModel.aim();
++ auto *aimPrivate = QAbstractItemModelPrivate::get(aim);
++ if (aimPrivate->resetting)
++ QObject::connect(aim, &QAbstractItemModel::modelReset, this, &QQmlDelegateModel::handleModelReset, Qt::SingleShotConnection);
++ }
+ }
+
+@@ -1915,26 +1927,23 @@
+ if (!d->m_adaptorModel.adaptsAim())
+ return;
+-
+- /*
+- roleNames are generally guaranteed to be stable (given that QAIM has no
+- change signal for them), except that resetting the model is allowed to
+- invalidate them (QTBUG-32132). DelegateModel must take this into account by
+- snapshotting the current roleNames before the model is reset.
+- Afterwards, if we detect that roleNames has changed, we throw the
+- current model set up away and rebuild everything from scratch – it is
+- unlikely that a more efficient implementation would be worth it.
+-
+- If we detect no changes, we simply use the existing logic to handle the
+- model reset.
+-
+- This (role name resetting) logic relies on the fact that
+- modelAboutToBeReset must be followed by a modelReset signal before any
+- further modelAboutToBeReset can occur. However, it's possible for user
+- code to begin the reset before connectToAbstractItemModel is called
+- (QTBUG-125053), in which case we don't attempt to reset the role names.
+- */
+- Q_ASSERT(!d->m_maybeResetRoleNames);
+- d->m_maybeResetRoleNames = true;
+- d->m_roleNamesBeforeReset = d->m_adaptorModel.aim()->roleNames();
++ auto aim = d->m_adaptorModel.aim();
++ auto oldRoleNames = aim->roleNames();
++ // this relies on the fact that modelAboutToBeReset must be followed
++ // by a modelReset signal before any further modelAboutToBeReset can occur
++ QObject::connect(aim, &QAbstractItemModel::modelReset, this, [this, d, oldRoleNames, aim](){
++ if (!d->m_adaptorModel.adaptsAim() || d->m_adaptorModel.aim() != aim)
++ return;
++ if (oldRoleNames == aim->roleNames()) {
++ // if the rolenames stayed the same (most common case), then we don't have
++ // to throw away all the setup that we did
++ handleModelReset();
++ } else {
++ // If they did change, we give up and just start from scratch via setMode
++ setModel(QVariant::fromValue(model()));
++ // but we still have to call handleModelReset, otherwise views will
++ // not refresh
++ handleModelReset();
++ }
++ }, Qt::SingleShotConnection);
+ }
+
+@@ -1946,21 +1955,4 @@
+
+ int oldCount = d->m_count;
+-
+- if (d->m_maybeResetRoleNames) {
+- auto aim = d->m_adaptorModel.aim();
+- if (!d->m_adaptorModel.adaptsAim() || d->m_adaptorModel.aim() != aim)
+- return;
+-
+- // If the role names stayed the same (most common case), then we don't have
+- // to throw away all the setup that we did.
+- // If they did change, we give up and just start from scratch via setModel.
+- // We do this before handling the reset to ensure that views refresh.
+- if (aim->roleNames() != d->m_roleNamesBeforeReset)
+- setModel(QVariant::fromValue(model()));
+-
+- d->m_maybeResetRoleNames = false;
+- d->m_roleNamesBeforeReset.clear();
+- }
+-
+ d->m_adaptorModel.rootIndex = QModelIndex();
+
+--- a/src/qmlmodels/qqmldelegatemodel_p_p.h
++++ b/src/qmlmodels/qqmldelegatemodel_p_p.h
+@@ -335,5 +335,4 @@
+ QList<QQDMIncubationTask *> m_finishedIncubating;
+ QList<QByteArray> m_watchedRoles;
+- QHash<int, QByteArray> m_roleNamesBeforeReset;
+
+ QString m_filterGroup;
+@@ -349,5 +348,4 @@
+ bool m_incubatorCleanupScheduled : 1;
+ bool m_waitingToFetchMore : 1;
+- bool m_maybeResetRoleNames : 1;
+
+ union {
+--- a/tests/auto/qml/qqmldelegatemodel/data/proxyModelWithDelayedSourceModelInListView.qml
++++ b/tests/auto/qml/qqmldelegatemodel/data/proxyModelWithDelayedSourceModelInListView.qml
+@@ -0,0 +1,30 @@
++import QtQuick
++import Test
++
++Window {
++ id: root
++ title: listView.count
++
++ property alias listView: listView
++ property ProxySourceModel connectionModel: null
++
++ Component {
++ id: modelComponent
++ ProxySourceModel {}
++ }
++
++ ListView {
++ id: listView
++ anchors.fill: parent
++
++ delegate: Text {
++ text: model.Name
++ }
++
++ model: ProxyModel {
++ sourceModel: root.connectionModel
++ }
++ }
++
++ Component.onCompleted: root.connectionModel = modelComponent.createObject(root)
++}
+--- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
++++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
+@@ -4,4 +4,5 @@
+ #include <QtTest/qtest.h>
+ #include <QtCore/qjsonobject.h>
++#include <QtCore/qsortfilterproxymodel.h>
+ #include <QtCore/QConcatenateTablesProxyModel>
+ #include <QtCore/qtimer.h>
+@@ -52,4 +53,5 @@
+ void clearCacheDuringInsertion();
+ void viewUpdatedOnDelegateChoiceAffectingRoleChange();
++ void proxyModelWithDelayedSourceModelInListView();
+ };
+
+@@ -732,4 +734,77 @@
+ }
+
++class ProxySourceModel : public QAbstractListModel
++{
++ Q_OBJECT
++ QML_ELEMENT
++public:
++ explicit ProxySourceModel(QObject *parent = nullptr)
++ : QAbstractListModel(parent)
++ {
++ for (int i = 0; i < rows; ++i) {
++ beginInsertRows(QModelIndex(), i, i);
++ endInsertRows();
++ }
++ }
++
++ ~ProxySourceModel() override = default;
++
++ int rowCount(const QModelIndex &) const override
++ {
++ return rows;
++ }
++
++ QVariant data(const QModelIndex &, int ) const override
++ {
++ return "Hello";
++ }
++
++ QHash<int, QByteArray> roleNames() const override
++ {
++ QHash<int, QByteArray> roles = QAbstractListModel::roleNames();
++ roles[Qt::UserRole + 1] = "Name";
++
++ return roles;
++ }
++
++ static const int rows = 1;
++};
++
++class ProxyModel : public QSortFilterProxyModel
++{
++ Q_OBJECT
++ QML_ELEMENT
++ Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel WRITE setSourceModel)
++
++public:
++ explicit ProxyModel(QObject *parent = nullptr)
++ : QSortFilterProxyModel(parent)
++ {
++ }
++
++ ~ProxyModel() override = default;
++};
++
++// Checks that the correct amount of delegates are created when using a proxy
++// model whose source model is set after a delay.
++void tst_QQmlDelegateModel::proxyModelWithDelayedSourceModelInListView()
++{
++ QTest::failOnWarning();
++
++ qmlRegisterTypesAndRevisions<ProxySourceModel>("Test", 1);
++ qmlRegisterTypesAndRevisions<ProxyModel>("Test", 1);
++
++ QQuickApplicationHelper helper(this, "proxyModelWithDelayedSourceModelInListView.qml");
++ QVERIFY2(helper.ready, helper.failureMessage());
++ QQuickWindow *window = helper.window;
++ window->show();
++ QVERIFY(QTest::qWaitForWindowExposed(window));
++
++ auto *listView = window->property("listView").value<QQuickListView *>();
++ QVERIFY(listView);
++ const auto delegateModel = QQuickItemViewPrivate::get(listView)->model;
++ QTRY_COMPARE(listView->count(), 1);
++}
++
+ QTEST_MAIN(tst_QQmlDelegateModel)
+
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch
new file mode 100644
index 000000000000..12c15ad1accd
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch
@@ -0,0 +1,19 @@
+https://bugs.kde.org/show_bug.cgi?id=494281
+https://bugreports.qt.io/browse/QTBUG-129797
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/596457
+--- a/src/qmlcompiler/qqmljscodegenerator.cpp
++++ b/src/qmlcompiler/qqmljscodegenerator.cpp
+@@ -79,5 +79,5 @@
+ + (m_jsUnitGenerator->hasStringId(elementName)
+ ? QString::number(m_jsUnitGenerator->getStringId(elementName))
+- : u'"' + elementName + u'"') + u")"_s;
++ : u"QStringLiteral(\"%1\")"_s.arg(elementName));
+ }
+
+@@ -87,5 +87,5 @@
+ + (m_jsUnitGenerator->hasStringId(elementName)
+ ? QString::number(m_jsUnitGenerator->getStringId(elementName))
+- : u'"' + elementName + u'"') + u")"_s;
++ : u"QStringLiteral(\"%1\")"_s.arg(elementName));
+ }
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r2.ebuild
similarity index 96%
rename from dev-qt/qtdeclarative/qtdeclarative-6.7.3-r1.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.7.3-r2.ebuild
index 724f992b0453..749123d1c04f 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r1.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r2.ebuild
@@ -33,6 +33,10 @@ BDEPEND="
~dev-qt/qtshadertools-${PV}:6
"
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
+)
+
src_configure() {
local mycmakeargs=(
$(cmake_use_find_package qmlls Qt6LanguageServerPrivate)
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r1.ebuild
similarity index 94%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r1.ebuild
index 724f992b0453..41fbd3c4f304 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r1.ebuild
@@ -33,6 +33,11 @@ BDEPEND="
~dev-qt/qtshadertools-${PV}:6
"
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
+ "${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
+)
+
src_configure() {
local mycmakeargs=(
$(cmake_use_find_package qmlls Qt6LanguageServerPrivate)
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/
@ 2024-10-25 7:13 Ionen Wolkens
0 siblings, 0 replies; 8+ messages in thread
From: Ionen Wolkens @ 2024-10-25 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 32b40fb3712c792bb39a2c68d1fb97bb1ee46fd7
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 25 07:03:09 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Oct 25 07:12:18 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=32b40fb3
dev-qt/qtdeclarative: backport fix for QTBUG-129622
This should resolve the last (known) major blocker for
potentially stabilizing 6.7.3, likely in a few days if
nothing comes up.
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.7.3-QTBUG-129622.patch | 84 ++++++++++++++++++++++
...7.3-r3.ebuild => qtdeclarative-6.7.3-r4.ebuild} | 1 +
...8.0-r3.ebuild => qtdeclarative-6.8.0-r4.ebuild} | 1 +
3 files changed, 86 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch
new file mode 100644
index 000000000000..3e2bc70b5c2c
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129622.patch
@@ -0,0 +1,84 @@
+https://bugreports.qt.io/browse/QTBUG-129622
+https://bugs.kde.org/show_bug.cgi?id=493854
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/598853
+--- a/src/quick/items/qquickitemview.cpp
++++ b/src/quick/items/qquickitemview.cpp
+@@ -2481,5 +2481,7 @@
+ QQuickItemPrivate::get(item->item)->setCulled(true);
+ }
+- if (!isClearing)
++ // If deleteLater was called, the item isn't long for this world and so we shouldn't store references to it.
++ // This can happen when a Repeater is used to populate items in SwipeView's ListView contentItem.
++ if (!isClearing && !QObjectPrivate::get(item->item)->deleteLaterCalled)
+ unrequestedItems.insert(item->item, model->indexOf(item->item, q));
+ } else if (flags & QQmlInstanceModel::Destroyed) {
+--- a/tests/auto/quickcontrols/controls/data/tst_swipeview.qml
++++ b/tests/auto/quickcontrols/controls/data/tst_swipeview.qml
+@@ -5,4 +5,5 @@
+ import QtTest
+ import QtQuick.Controls
++import QtQuick.Layouts
+
+ TestCase {
+@@ -761,3 +762,61 @@
+ compare(item2.x, swipeListView.width)
+ }
++
++ Component {
++ id: zeroSizeSwipeViewWithRepeatersComponent
++
++ Item {
++ objectName: "rootItem"
++ anchors.fill: parent
++
++ property alias swipeView: swipeView
++ property int d
++
++ Timer {
++ interval: 2
++ running: true
++ repeat: false
++ onTriggered: d = 2
++ }
++
++ SwipeView {
++ id: swipeView
++ contentItem.objectName: "swipeViewListView"
++
++ Repeater {
++ objectName: "swipeViewContentItemRepeater"
++ model: [
++ {
++ title: d
++ }
++ ]
++
++ delegate: GridLayout {
++ objectName: "gridLayoutDelegate"
++
++ Repeater {
++ id: repeater
++ objectName: "delegateRepeater"
++ model: d
++ delegate: Item {
++ objectName: "delegate" + index
++
++ required property int index
++ }
++ }
++ }
++ }
++ }
++ }
++ }
++
++ // QTBUG-129622
++ function test_zeroSizeSwipeViewWithRepeaters() {
++ let root = createTemporaryObject(zeroSizeSwipeViewWithRepeatersComponent, testCase)
++ verify(root)
++
++ let swipeView = root.swipeView
++ tryCompare(root, "d", 2)
++ // Shouldn't crash when the model is changed.
++ }
+ }
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r4.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.7.3-r4.ebuild
index cc732b58ef89..a72aaa25a4e9 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r4.ebuild
@@ -37,6 +37,7 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
"${FILESDIR}"/${PN}-6.7.3-QTBUG-129165.patch
+ "${FILESDIR}"/${PN}-6.7.3-QTBUG-129622.patch
)
src_configure() {
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
index 77bfae60bd88..84d5899b33b6 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
@@ -36,6 +36,7 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
+ "${FILESDIR}"/${PN}-6.7.3-QTBUG-129622.patch
"${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
)
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-10-25 7:13 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-17 22:45 [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/, dev-qt/qtdeclarative/files/ Yixun Lan
-- strict thread matches above, loose matches on Subject: below --
2024-10-25 7:13 Ionen Wolkens
2024-10-08 17:46 Ionen Wolkens
2020-06-10 17:53 Andreas Sturmlechner
2020-05-18 6:20 Andreas Sturmlechner
2020-05-17 0:24 Andreas Sturmlechner
2019-11-20 21:21 Andreas Sturmlechner
2015-08-24 1:28 Davide Pesavento
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox