public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [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