diff --git a/desktop/toolkit/qt5/qt5-quickcontrols2/files/qt_kde.patch b/desktop/toolkit/qt5/qt5-quickcontrols2/files/qt_kde.patch new file mode 100644 index 0000000000..462ed613cc --- /dev/null +++ b/desktop/toolkit/qt5/qt5-quickcontrols2/files/qt_kde.patch @@ -0,0 +1,290 @@ +diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp +index 950e4e099..1df0c706d 100644 +--- a/src/quicktemplates2/qquickabstractbutton.cpp ++++ b/src/quicktemplates2/qquickabstractbutton.cpp +@@ -387,6 +387,17 @@ void QQuickAbstractButtonPrivate::itemImplicitHeightChanged(QQuickItem *item) + emit q->implicitIndicatorHeightChanged(); + } + ++void QQuickAbstractButtonPrivate::itemDestroyed(QQuickItem *item) ++{ ++ Q_Q(QQuickAbstractButton); ++ QQuickControlPrivate::itemDestroyed(item); ++ if (item == indicator) { ++ indicator = nullptr; ++ emit q->implicitIndicatorWidthChanged(); ++ emit q->implicitIndicatorHeightChanged(); ++ } ++} ++ + QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const + { + Q_Q(const QQuickAbstractButton); +diff --git a/src/quicktemplates2/qquickabstractbutton_p_p.h b/src/quicktemplates2/qquickabstractbutton_p_p.h +index 9291c1a87..b729720f2 100644 +--- a/src/quicktemplates2/qquickabstractbutton_p_p.h ++++ b/src/quicktemplates2/qquickabstractbutton_p_p.h +@@ -109,6 +109,7 @@ public: + + void itemImplicitWidthChanged(QQuickItem *item) override; + void itemImplicitHeightChanged(QQuickItem *item) override; ++ void itemDestroyed(QQuickItem *item) override; + + // copied from qabstractbutton.cpp + static const int AUTO_REPEAT_DELAY = 300; +diff --git a/src/quicktemplates2/qquickaction.cpp b/src/quicktemplates2/qquickaction.cpp +index 2041e7741..8610cdfae 100644 +--- a/src/quicktemplates2/qquickaction.cpp ++++ b/src/quicktemplates2/qquickaction.cpp +@@ -145,7 +145,7 @@ int QQuickActionPrivate::ShortcutEntry::shortcutId() const + + void QQuickActionPrivate::ShortcutEntry::grab(const QKeySequence &shortcut, bool enabled) + { +- if (shortcut.isEmpty()) ++ if (shortcut.isEmpty() || m_shortcutId) + return; + + Qt::ShortcutContext context = Qt::WindowShortcut; // TODO +diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp +index f38c2b09c..6eed2a024 100644 +--- a/src/quicktemplates2/qquickcontainer.cpp ++++ b/src/quicktemplates2/qquickcontainer.cpp +@@ -225,6 +225,7 @@ void QQuickContainerPrivate::cleanup() + QObject::disconnect(contentModel, &QQmlObjectModel::countChanged, q, &QQuickContainer::countChanged); + QObject::disconnect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged); + delete contentModel; ++ contentModel = nullptr; + } + + QQuickItem *QQuickContainerPrivate::itemAt(int index) const +@@ -436,7 +437,7 @@ void QQuickContainerPrivate::contentChildren_clear(QQmlListProperty + void QQuickContainerPrivate::updateContentWidth() + { + Q_Q(QQuickContainer); +- if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth)) ++ if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth) || !contentModel) + return; + + contentWidth = implicitContentWidth; +@@ -446,7 +447,7 @@ void QQuickContainerPrivate::updateContentWidth() + void QQuickContainerPrivate::updateContentHeight() + { + Q_Q(QQuickContainer); +- if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight)) ++ if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight) || !contentModel) + return; + + contentHeight = implicitContentHeight; +diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp +index e6db14eb5..6197d1547 100644 +--- a/src/quicktemplates2/qquickdialogbuttonbox.cpp ++++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp +@@ -237,7 +237,7 @@ static QRectF alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment + void QQuickDialogButtonBoxPrivate::resizeContent() + { + Q_Q(QQuickDialogButtonBox); +- if (!contentItem) ++ if (!contentItem || !contentModel) + return; + + QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding()); +@@ -322,6 +322,9 @@ void QQuickDialogButtonBoxPrivate::updateLayout() + qreal QQuickDialogButtonBoxPrivate::getContentWidth() const + { + Q_Q(const QQuickDialogButtonBox); ++ if (!contentModel) ++ return 0; ++ + const int count = contentModel->count(); + const qreal totalSpacing = qMax(0, count - 1) * spacing; + qreal totalWidth = totalSpacing; +@@ -341,6 +344,9 @@ qreal QQuickDialogButtonBoxPrivate::getContentWidth() const + qreal QQuickDialogButtonBoxPrivate::getContentHeight() const + { + Q_Q(const QQuickDialogButtonBox); ++ if (!contentModel) ++ return 0; ++ + const int count = contentModel->count(); + qreal maxHeight = 0; + for (int i = 0; i < count; ++i) { +diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp +index b8d417f29..c8cd142ae 100644 +--- a/src/quicktemplates2/qquickoverlay.cpp ++++ b/src/quicktemplates2/qquickoverlay.cpp +@@ -399,8 +399,11 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data) + Q_D(QQuickOverlay); + QQuickItem::itemChange(change, data); + +- if (change == ItemChildAddedChange || change == ItemChildRemovedChange) ++ if (change == ItemChildAddedChange || change == ItemChildRemovedChange) { + setVisible(!d->allDrawers.isEmpty() || !childItems().isEmpty()); ++ if (data.item->parent() == d->mouseGrabberPopup) ++ d->setMouseGrabberPopup(nullptr); ++ } + } + + void QQuickOverlay::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +diff --git a/tests/auto/controls/data/tst_switch.qml b/tests/auto/controls/data/tst_switch.qml +index b3fab41ca..10b6baa02 100644 +--- a/tests/auto/controls/data/tst_switch.qml ++++ b/tests/auto/controls/data/tst_switch.qml +@@ -608,4 +608,27 @@ TestCase { + mouseClick(control.indicator) + verify(control.activeFocus) + } ++ ++ Component { ++ id: deletionOrder1 ++ Item { ++ Image { id: innerImage } ++ Switch { indicator: innerImage } ++ } ++ } ++ ++ Component { ++ id: deletionOrder2 ++ Item { ++ Switch { indicator: innerImage } ++ Image { id: innerImage } ++ } ++ } ++ ++ function test_deletionOrder() { ++ var control1 = createTemporaryObject(deletionOrder1, testCase) ++ verify(control1) ++ var control2 = createTemporaryObject(deletionOrder2, testCase) ++ verify(control2) ++ } + } +diff --git a/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml b/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml +new file mode 100644 +index 000000000..9e4598b9f +--- /dev/null ++++ b/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml +@@ -0,0 +1,78 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2021 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:BSD$ ++** 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. ++** ++** BSD License Usage ++** Alternatively, you may use this file under the terms of the BSD license ++** as follows: ++** ++** "Redistribution and use in source and binary forms, with or without ++** modification, are permitted provided that the following conditions are ++** met: ++** * Redistributions of source code must retain the above copyright ++** notice, this list of conditions and the following disclaimer. ++** * Redistributions in binary form must reproduce the above copyright ++** notice, this list of conditions and the following disclaimer in ++** the documentation and/or other materials provided with the ++** distribution. ++** * Neither the name of The Qt Company Ltd nor the names of its ++** contributors may be used to endorse or promote products derived ++** from this software without specific prior written permission. ++** ++** ++** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++import QtQuick 2.15 ++import QtQuick.Controls 2.15 ++ ++ApplicationWindow { ++ id: window ++ width: 400 ++ height: 400 ++ title: "releaseAfterExitTransition" ++ ++ property alias popup: popup ++ property alias modalPopup: modalPopup ++ ++ Popup { ++ id: popup ++ y: parent.height - height ++ width: 50 ++ height: 50 ++ } ++ ++ Popup { ++ id: modalPopup ++ modal: true ++ y: parent.height - height ++ width: 50 ++ height: 50 ++ exit: Transition { PauseAnimation { duration: 100 } } ++ } ++} +diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp +index ede3640c2..f1840946b 100644 +--- a/tests/auto/qquickpopup/tst_qquickpopup.cpp ++++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp +@@ -97,6 +97,7 @@ private slots: + void invisibleToolTipOpen(); + void centerInOverlayWithinStackViewItem(); + void destroyDuringExitTransition(); ++ void releaseAfterExitTransition(); + }; + + void tst_QQuickPopup::initTestCase() +@@ -1459,6 +1460,34 @@ void tst_QQuickPopup::destroyDuringExitTransition() + QVERIFY(!button->isDown()); + } + ++void tst_QQuickPopup::releaseAfterExitTransition() ++{ ++ QQuickApplicationHelper helper(this, "releaseAfterExitTransition.qml"); ++ QVERIFY2(helper.ready, helper.failureMessage()); ++ ++ QQuickWindow *window = helper.window; ++ window->show(); ++ QVERIFY(QTest::qWaitForWindowActive(window)); ++ ++ QQuickOverlay *overlay = QQuickOverlay::overlay(window); ++ QQuickPopup *modalPopup = window->property("modalPopup").value(); ++ QQuickPopup *popup = window->property("popup").value(); ++ ++ modalPopup->open(); ++ QTRY_VERIFY(modalPopup->isOpened()); ++ ++ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); ++ // wait until the transition is finished and the overlay hides itself ++ QTRY_VERIFY(!overlay->isVisible()); ++ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); ++ ++ popup->open(); ++ QTRY_VERIFY(popup->isOpened()); ++ QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); ++ QTRY_VERIFY(!popup->isOpened()); ++} ++ ++ + QTEST_QUICKCONTROLS_MAIN(tst_QQuickPopup) + + #include "tst_qquickpopup.moc" diff --git a/desktop/toolkit/qt5/qt5-quickcontrols2/pspec.xml b/desktop/toolkit/qt5/qt5-quickcontrols2/pspec.xml index dd1dc54801..279fad386c 100755 --- a/desktop/toolkit/qt5/qt5-quickcontrols2/pspec.xml +++ b/desktop/toolkit/qt5/qt5-quickcontrols2/pspec.xml @@ -20,6 +20,9 @@ qt5-xmlpatterns-devel qt5-declarative-devel + + qt_kde.patch + @@ -60,6 +63,13 @@ + + 2022-04-18 + 5.15.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + 2022-02-18 5.15.2 diff --git a/desktop/toolkit/qt5/qt5-svg/files/qt_kde.patch b/desktop/toolkit/qt5/qt5-svg/files/qt_kde.patch index a94582416b..899cbb4ab8 100644 --- a/desktop/toolkit/qt5/qt5-svg/files/qt_kde.patch +++ b/desktop/toolkit/qt5/qt5-svg/files/qt_kde.patch @@ -1,55 +1,3 @@ -diff --git a/dist/changes-5.12.10 b/dist/changes-5.12.10 -new file mode 100644 -index 0000000..b8f8f69 ---- /dev/null -+++ b/dist/changes-5.12.10 -@@ -0,0 +1,46 @@ -+Qt 5.12.10 is a bug-fix release. It maintains both forward and backward -+compatibility (source and binary) with Qt 5.12.9. -+ -+For more details, refer to the online documentation included in this -+distribution. The documentation is also available online: -+ -+ https://doc.qt.io/qt-5.12/index.html -+ -+The Qt version 5.12 series is binary compatible with the 5.11.x series. -+Applications compiled for 5.11 will continue to run with 5.12. -+ -+Some of the changes listed in this file include issue tracking numbers -+corresponding to tasks in the Qt Bug Tracker: -+ -+ https://bugreports.qt.io/ -+ -+Each of these identifiers can be entered in the bug tracker to obtain more -+information about a particular change. -+ -+**************************************************************************** -+* Library * -+**************************************************************************** -+ -+ - This release fixes a number of cases where input fuzzing has -+ revealed that corrupt or pathological input could result in crashes -+ or undefined behavior: -+ oss-fuzz-23588 -+ oss-fuzz-23606 -+ oss-fuzz-23633 -+ oss-fuzz-23643 -+ oss-fuzz-23644 -+ oss-fuzz-23731 -+ oss-fuzz-24000 -+ oss-fuzz-24028 -+ oss-fuzz-24131 -+ oss-fuzz-24146 -+ oss-fuzz-24308 -+ oss-fuzz-24611 -+ oss-fuzz-24738 -+ -+Third-Party Code -+---------------- -+ -+ - XSVG license was re-classified to HPND-sell-variant, "Historical Permission -+ Notice and Disclaimer - sell variant" -+ diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp index bd39b2a..fd3529a 100644 --- a/src/plugins/imageformats/svg/qsvgiohandler.cpp @@ -122,28 +70,20 @@ index bd39b2a..fd3529a 100644 QT_END_NAMESPACE diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index c937254..f2653af 100644 +index b3d9aaf..f2653af 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp -@@ -65,6 +65,7 @@ - #include "private/qmath_p.h" - - #include "float.h" -+#include - - QT_BEGIN_NAMESPACE - -@@ -672,6 +673,9 @@ static qreal toDouble(const QChar *&str) +@@ -673,7 +673,8 @@ static qreal toDouble(const QChar *&str) val = -val; } else { val = QByteArray::fromRawData(temp, pos).toDouble(); +- if (qFpClassify(val) != FP_NORMAL) + // Do not tolerate values too wild to be represented normally by floats + if (qFpClassify(float(val)) != FP_NORMAL) -+ val = 0; + val = 0; } return val; - -@@ -724,15 +728,25 @@ static QVector parseNumbersList(const QChar *&str) +@@ -727,15 +728,25 @@ static QVector parseNumbersList(const QChar *&str) return points; } @@ -171,7 +111,7 @@ index c937254..f2653af 100644 while (str->isSpace()) ++str; -@@ -1379,8 +1393,10 @@ static void parseFont(QSvgNode *node, +@@ -1382,8 +1393,10 @@ static void parseFont(QSvgNode *node, case FontSizeNone: break; case FontSizeValue: { @@ -184,7 +124,7 @@ index c937254..f2653af 100644 } break; default: -@@ -1611,6 +1627,7 @@ static void pathArc(QPainterPath &path, +@@ -1614,6 +1627,7 @@ static void pathArc(QPainterPath &path, static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) { @@ -192,7 +132,7 @@ index c937254..f2653af 100644 qreal x0 = 0, y0 = 0; // starting point qreal x = 0, y = 0; // current point char lastMode = 0; -@@ -1618,28 +1635,31 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1621,28 +1635,31 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) const QChar *str = dataStr.constData(); const QChar *end = str + dataStr.size(); @@ -229,7 +169,7 @@ index c937254..f2653af 100644 break; } x = x0 = num[0] + offsetX; -@@ -1656,8 +1676,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1659,8 +1676,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) break; case 'M': { if (count < 2) { @@ -239,7 +179,7 @@ index c937254..f2653af 100644 break; } x = x0 = num[0]; -@@ -1683,8 +1702,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1686,8 +1702,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) break; case 'l': { if (count < 2) { @@ -249,7 +189,7 @@ index c937254..f2653af 100644 break; } x = num[0] + offsetX; -@@ -1697,8 +1715,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1700,8 +1715,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) break; case 'L': { if (count < 2) { @@ -259,7 +199,7 @@ index c937254..f2653af 100644 break; } x = num[0]; -@@ -1738,8 +1755,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1741,8 +1755,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) break; case 'c': { if (count < 6) { @@ -269,7 +209,7 @@ index c937254..f2653af 100644 break; } QPointF c1(num[0] + offsetX, num[1] + offsetY); -@@ -1755,8 +1771,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1758,8 +1771,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 'C': { if (count < 6) { @@ -279,7 +219,7 @@ index c937254..f2653af 100644 break; } QPointF c1(num[0], num[1]); -@@ -1772,8 +1787,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1775,8 +1787,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 's': { if (count < 4) { @@ -289,7 +229,7 @@ index c937254..f2653af 100644 break; } QPointF c1; -@@ -1794,8 +1808,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1797,8 +1808,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 'S': { if (count < 4) { @@ -299,7 +239,7 @@ index c937254..f2653af 100644 break; } QPointF c1; -@@ -1816,8 +1829,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1819,8 +1829,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 'q': { if (count < 4) { @@ -309,7 +249,7 @@ index c937254..f2653af 100644 break; } QPointF c(num[0] + offsetX, num[1] + offsetY); -@@ -1832,8 +1844,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1835,8 +1844,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 'Q': { if (count < 4) { @@ -319,7 +259,7 @@ index c937254..f2653af 100644 break; } QPointF c(num[0], num[1]); -@@ -1848,8 +1859,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1851,8 +1859,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 't': { if (count < 2) { @@ -329,7 +269,7 @@ index c937254..f2653af 100644 break; } QPointF e(num[0] + offsetX, num[1] + offsetY); -@@ -1869,8 +1879,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1872,8 +1879,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 'T': { if (count < 2) { @@ -339,7 +279,7 @@ index c937254..f2653af 100644 break; } QPointF e(num[0], num[1]); -@@ -1890,8 +1899,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1893,8 +1899,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } case 'a': { if (count < 7) { @@ -349,7 +289,7 @@ index c937254..f2653af 100644 break; } qreal rx = (*num++); -@@ -1913,8 +1921,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1916,8 +1921,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) break; case 'A': { if (count < 7) { @@ -359,7 +299,7 @@ index c937254..f2653af 100644 break; } qreal rx = (*num++); -@@ -1935,12 +1942,15 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) +@@ -1938,12 +1942,15 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) } break; default: @@ -377,7 +317,7 @@ index c937254..f2653af 100644 } static bool parseStyle(QSvgNode *node, -@@ -2354,6 +2364,27 @@ static bool parseAnimateNode(QSvgNode *parent, +@@ -2357,6 +2364,27 @@ static bool parseAnimateNode(QSvgNode *parent, return true; } @@ -405,7 +345,7 @@ index c937254..f2653af 100644 static bool parseAnimateColorNode(QSvgNode *parent, const QXmlStreamAttributes &attributes, QSvgHandler *handler) -@@ -2387,23 +2418,13 @@ static bool parseAnimateColorNode(QSvgNode *parent, +@@ -2390,23 +2418,13 @@ static bool parseAnimateColorNode(QSvgNode *parent, } } @@ -436,7 +376,7 @@ index c937254..f2653af 100644 QSvgAnimateColor *anim = new QSvgAnimateColor(begin, end, 0); anim->setArgs((targetStr == QLatin1String("fill")), colors); -@@ -2493,24 +2514,13 @@ static bool parseAnimateTransformNode(QSvgNode *parent, +@@ -2496,24 +2514,13 @@ static bool parseAnimateTransformNode(QSvgNode *parent, } } @@ -468,7 +408,7 @@ index c937254..f2653af 100644 QSvgAnimateTransform::TransformType type = QSvgAnimateTransform::Empty; if (typeStr == QLatin1String("translate")) { -@@ -2566,6 +2576,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent, +@@ -2569,6 +2576,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent, qreal ncx = toDouble(cx); qreal ncy = toDouble(cy); qreal nr = toDouble(r); @@ -477,7 +417,7 @@ index c937254..f2653af 100644 QRectF rect(ncx-nr, ncy-nr, nr*2, nr*2); QSvgNode *circle = new QSvgCircle(parent, rect); -@@ -2976,8 +2988,8 @@ static QSvgNode *createPathNode(QSvgNode *parent, +@@ -2979,8 +2988,8 @@ static QSvgNode *createPathNode(QSvgNode *parent, QPainterPath qpath; qpath.setFillRule(Qt::WindingFill); @@ -488,7 +428,7 @@ index c937254..f2653af 100644 QSvgNode *path = new QSvgPath(parent, qpath); return path; -@@ -3036,13 +3048,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node, +@@ -3039,13 +3048,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node, qreal ncx = 0.5; qreal ncy = 0.5; @@ -506,7 +446,7 @@ index c937254..f2653af 100644 qreal nfx = ncx; if (!fx.isEmpty()) -@@ -3338,7 +3353,9 @@ static QSvgNode *createTextNode(QSvgNode *parent, +@@ -3341,7 +3353,9 @@ static QSvgNode *createTextNode(QSvgNode *parent, //### editable and rotate not handled QSvgHandler::LengthType type; qreal nx = parseLength(x, type, handler); @@ -516,7 +456,7 @@ index c937254..f2653af 100644 QSvgNode *text = new QSvgText(parent, QPointF(nx, ny)); return text; -@@ -3679,9 +3696,7 @@ void QSvgHandler::parse() +@@ -3682,9 +3696,7 @@ void QSvgHandler::parse() case QXmlStreamReader::EndElement: endElement(xml->name()); ++remainingUnfinishedElements; diff --git a/desktop/toolkit/qt5/qt5-svg/pspec.xml b/desktop/toolkit/qt5/qt5-svg/pspec.xml index 59a008b68e..24684d2528 100755 --- a/desktop/toolkit/qt5/qt5-svg/pspec.xml +++ b/desktop/toolkit/qt5/qt5-svg/pspec.xml @@ -60,6 +60,13 @@ + + 2022-04-18 + 5.15.2 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + 2022-02-18 5.15.2