diff --git a/0029-Remove-unused-QPointer-QQuickPointerMask.patch b/0029-Remove-unused-QPointer-QQuickPointerMask.patch new file mode 100644 index 0000000..a3f429f --- /dev/null +++ b/0029-Remove-unused-QPointer-QQuickPointerMask.patch @@ -0,0 +1,35 @@ +From 6683c414c5cc6ab46197c41bb1361c518ca84d3e Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Thu, 17 Jun 2021 16:32:28 +0200 +Subject: [PATCH 29/29] Remove unused QPointer + +Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851 +Reviewed-by: Shawn Rutledge +(cherry picked from commit ac03b4b8ee9cc8d4522e0c8cf1018ff086f80c1b) +--- + src/quick/items/qquickmousearea_p_p.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/quick/items/qquickmousearea_p_p.h b/src/quick/items/qquickmousearea_p_p.h +index fba383e268..0d63618622 100644 +--- a/src/quick/items/qquickmousearea_p_p.h ++++ b/src/quick/items/qquickmousearea_p_p.h +@@ -61,7 +61,6 @@ QT_BEGIN_NAMESPACE + + class QQuickMouseEvent; + class QQuickMouseArea; +-class QQuickPointerMask; + class QQuickMouseAreaPrivate : public QQuickItemPrivate + { + Q_DECLARE_PUBLIC(QQuickMouseArea) +@@ -100,7 +99,6 @@ public: + #if QT_CONFIG(quick_draganddrop) + QQuickDrag *drag; + #endif +- QPointer mask; + QPointF startScene; + QPointF targetStartPos; + QPointF lastPos; +-- +2.31.1 + diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec index 3c23915..845ec64 100644 --- a/qt5-qtdeclarative.spec +++ b/qt5-qtdeclarative.spec @@ -8,7 +8,7 @@ Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} Version: 5.15.2 -Release: 6%{?dist} +Release: 7%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details License: LGPLv2 with exceptions or GPLv3 with exceptions @@ -56,6 +56,8 @@ Patch28: 0028-Support-apos-in-styled-text.patch ## upstreamable patches Patch100: %{name}-gcc11.patch +# https://pagure.io/fedora-kde/SIG/issue/82 +Patch101: qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch # filter qml provides %global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$ @@ -233,6 +235,10 @@ make check -k -C tests ||: %changelog +* Fri Jul 30 2021 Rex Dieter - 5.15.2-7 +- sync kde/5.15 branch fixes +- pull in candidate fix QTBUG-83890 + * Fri Jul 23 2021 Fedora Release Engineering - 5.15.2-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild diff --git a/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch b/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch new file mode 100644 index 0000000..c0a0aea --- /dev/null +++ b/qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch @@ -0,0 +1,344 @@ +Parent: f5a4e984 (QQuickTextInputPrivate: refactor getImplicitWidth() to calculateImplicitWidth()) +Author: David Redondo +AuthorDate: 2020-05-13 11:04:23 +0200 +Commit: Mitch Curtis +CommitDate: 2020-05-25 10:58:35 +0200 + +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. + +This change also adds tst_qquicklistview2 to speed up development. +tst_QQuickListView is almost 9000 lines long, and compiling it +is slow. In addition, a similar approach (creating a second test to +avoid the slowness of a massive one) already exists for QQuickItem +tests. + +Fixes: QTBUG-83890 +Pick-to: 5.15 +Change-Id: I7f4060c2f46ae07611bedceca0d322c5f7f6affb +======================================================================================================================== +Index: qtdeclarative-everywhere-src-5.15.2/src/quick/items/qquickitemview.cpp +=================================================================== +--- qtdeclarative-everywhere-src-5.15.2.orig/src/quick/items/qquickitemview.cpp ++++ qtdeclarative-everywhere-src-5.15.2/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); +Index: qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +=================================================================== +--- qtdeclarative-everywhere-src-5.15.2.orig/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp ++++ qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +@@ -73,6 +73,8 @@ public: + tst_QQuickListView(); + + private slots: ++ // WARNING: please add new tests to tst_qquicklistview2; this file is too slow to work with. ++ + void init(); + void cleanupTestCase(); + // Test QAbstractItemModel model types +@@ -299,6 +301,8 @@ private slots: + void requiredObjectListModel(); + void clickHeaderAndFooterWhenClip(); + ++ // WARNING: please add new tests to tst_qquicklistview2; this file is too slow to work with. ++ + private: + template void items(const QUrl &source); + template void changed(const QUrl &source); +@@ -10094,6 +10098,8 @@ void tst_QQuickListView::clickHeaderAndF + QVERIFY(root->property("footerPressed").toBool()); + } + ++// WARNING: please add new tests to tst_qquicklistview2; this file is too slow to work with. ++ + QTEST_MAIN(tst_QQuickListView) + + #include "tst_qquicklistview.moc" +Index: qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/data/maxXExtent.qml +=================================================================== +--- /dev/null ++++ qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/data/maxXExtent.qml +@@ -0,0 +1,54 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the test suite of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3 as published by the Free Software ++** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++import QtQuick 2.15 ++ ++Item { ++ property alias view: view ++ ++ ListView { ++ id: view ++ model: 10 ++ width: 200 ++ height: 200 ++ ++ Rectangle { ++ anchors.fill: parent ++ color: "transparent" ++ border.color: "darkorange" ++ } ++ ++ delegate: Rectangle { ++ width: 100 ++ height: 100 ++ Text { ++ text: modelData ++ } ++ } ++ } ++} +Index: qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/data/maxYExtent.qml +=================================================================== +--- /dev/null ++++ qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/data/maxYExtent.qml +@@ -0,0 +1,55 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the test suite of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3 as published by the Free Software ++** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++import QtQuick 2.15 ++ ++Item { ++ property alias view: view ++ ++ ListView { ++ id: view ++ model: 10 ++ width: 200 ++ height: 200 ++ orientation: ListView.Horizontal ++ ++ Rectangle { ++ anchors.fill: parent ++ color: "transparent" ++ border.color: "darkorange" ++ } ++ ++ delegate: Rectangle { ++ width: 100 ++ height: 100 ++ Text { ++ text: modelData ++ } ++ } ++ } ++} +Index: qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/qquicklistview2.pro +=================================================================== +--- /dev/null ++++ qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/qquicklistview2.pro +@@ -0,0 +1,12 @@ ++CONFIG += testcase ++TARGET = tst_qquicklistview2 ++macos:CONFIG -= app_bundle ++ ++SOURCES += tst_qquicklistview2.cpp ++ ++include (../../shared/util.pri) ++include (../shared/util.pri) ++ ++TESTDATA = data/* ++ ++QT += core-private gui-private qml-private quick-private testlib qmltest +Index: qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp +=================================================================== +--- /dev/null ++++ qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp +@@ -0,0 +1,114 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the test suite of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3 as published by the Free Software ++** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "../../shared/util.h" ++#include "../shared/viewtestutil.h" ++ ++using namespace QQuickViewTestUtil; ++ ++class tst_QQuickListView2 : public QQmlDataTest ++{ ++ Q_OBJECT ++ ++public: ++ tst_QQuickListView2(); ++ ++private slots: ++ void maxExtent_data(); ++ void maxExtent(); ++}; ++ ++tst_QQuickListView2::tst_QQuickListView2() ++{ ++} ++ ++class FriendlyItemView : public QQuickItemView ++{ ++ friend class ItemViewAccessor; ++}; ++ ++class ItemViewAccessor ++{ ++public: ++ ItemViewAccessor(QQuickItemView *itemView) : ++ mItemView(reinterpret_cast(itemView)) ++ { ++ } ++ ++ qreal maxXExtent() const ++ { ++ return mItemView->maxXExtent(); ++ } ++ ++ qreal maxYExtent() const ++ { ++ return mItemView->maxYExtent(); ++ } ++ ++private: ++ FriendlyItemView *mItemView = nullptr; ++}; ++ ++void tst_QQuickListView2::maxExtent_data() ++{ ++ QTest::addColumn("qmlFilePath"); ++ ++ QTest::addRow("maxXExtent") << "maxXExtent.qml"; ++ QTest::addRow("maxYExtent") << "maxYExtent.qml"; ++} ++ ++void tst_QQuickListView2::maxExtent() ++{ ++ QFETCH(QString, qmlFilePath); ++ ++ QScopedPointer window(createView()); ++ QVERIFY(window); ++ window->setSource(testFileUrl(qmlFilePath)); ++ QVERIFY2(window->status() == QQuickView::Ready, qPrintable(QDebug::toString(window->errors()))); ++ window->resize(640, 480); ++ window->show(); ++ QVERIFY(QTest::qWaitForWindowExposed(window.data())); ++ ++ QQuickListView *view = window->rootObject()->property("view").value(); ++ QVERIFY(view); ++ ItemViewAccessor viewAccessor(view); ++ if (view->orientation() == QQuickListView::Vertical) ++ QCOMPARE(viewAccessor.maxXExtent(), 0); ++ else if (view->orientation() == QQuickListView::Horizontal) ++ QCOMPARE(viewAccessor.maxYExtent(), 0); ++} ++ ++QTEST_MAIN(tst_QQuickListView2) ++ ++#include "tst_qquicklistview2.moc" +Index: qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/quick.pro +=================================================================== +--- qtdeclarative-everywhere-src-5.15.2.orig/tests/auto/quick/quick.pro ++++ qtdeclarative-everywhere-src-5.15.2/tests/auto/quick/quick.pro +@@ -67,6 +67,7 @@ QUICKTESTS += \ + qquickitem2 \ + qquickitemlayer \ + qquicklistview \ ++ qquicklistview2 \ + qquicktableview \ + qquickloader \ + qquickmousearea \