This commit is contained in:
Jan Grulich 2022-09-20 17:36:34 +02:00
parent f23f6600e1
commit a8ad97eeb7
9 changed files with 23 additions and 463 deletions

1
.gitignore vendored
View File

@ -14,3 +14,4 @@
/qtquickcontrols2-everywhere-opensource-src-5.15.3.tar.xz
/qtquickcontrols2-everywhere-opensource-src-5.15.4.tar.xz
/qtquickcontrols2-everywhere-opensource-src-5.15.5.tar.xz
/qtquickcontrols2-everywhere-opensource-src-5.15.6.tar.xz

View File

@ -1,7 +1,7 @@
From bfdaef37a08a24f043e7b24023ae3835e03ef68a Mon Sep 17 00:00:00 2001
From a568f331ed4e4b7dcdd5e3cd616614bc81001873 Mon Sep 17 00:00:00 2001
From: David Redondo <qt@david-redondo.de>
Date: Mon, 19 Jul 2021 10:06:17 +0200
Subject: [PATCH 1/6] Unset mouseGrabberPopup if it's removed from children
Subject: [PATCH 1/5] Unset mouseGrabberPopup if it's removed from children
The mouseGrabberPopup is supposed to be unset in handleRelease, however
when the exit transition of the mouseGrabberPopup (that closed itself on
@ -178,5 +178,5 @@ index ede3640c2..f1840946b 100644
#include "tst_qquickpopup.moc"
--
2.37.2
2.37.3

View File

@ -1,7 +1,7 @@
From d652727e3564d3a5f21788d9f75f903efbd4840c Mon Sep 17 00:00:00 2001
From f286eddcb80be3fb1903cd501dc97fdc69f923ea Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org>
Date: Tue, 4 Jan 2022 16:34:16 +0100
Subject: [PATCH 2/6] Ensure we don't crash when changing sizes after cleanup
Subject: [PATCH 2/5] Ensure we don't crash when changing sizes after cleanup
This addresses the problems I've seen during destruction. Only
encountered it when using complex layouts on a DialogButtonBox.
@ -79,5 +79,5 @@ index e6db14eb5..6197d1547 100644
qreal maxHeight = 0;
for (int i = 0; i < count; ++i) {
--
2.37.2
2.37.3

View File

@ -1,7 +1,7 @@
From 5ac8f83ed1d34712d11a6b75a5bb1f877b24706a Mon Sep 17 00:00:00 2001
From aeadc693cf323d61beb6e1d56121e6aabd013902 Mon Sep 17 00:00:00 2001
From: Oliver Eftevaag <oliver.eftevaag@qt.io>
Date: Wed, 19 Jan 2022 22:09:56 +0100
Subject: [PATCH 3/6] QQuickAction: don't grab the same shortcut multiple times
Subject: [PATCH 3/5] QQuickAction: don't grab the same shortcut multiple times
If the entry for the QQuickItem that the QQuickAction is set on has
already grabbed the shortcut, then m_shortcutId is no longer 0 and we
@ -45,5 +45,5 @@ index 2041e7741..8610cdfae 100644
Qt::ShortcutContext context = Qt::WindowShortcut; // TODO
--
2.37.2
2.37.3

View File

@ -1,7 +1,7 @@
From 38dbeb8f5aa346f490003c75d9fa6e4b817f5bc8 Mon Sep 17 00:00:00 2001
From c45351b5f6ddafcd540506c0ccb403daf449f8e7 Mon Sep 17 00:00:00 2001
From: Ulf Hermann <ulf.hermann@qt.io>
Date: Tue, 11 Jan 2022 12:42:47 +0100
Subject: [PATCH 4/6] QQuickAbstractButton: fix crash on destruction
Subject: [PATCH 4/5] QQuickAbstractButton: fix crash on destruction
If we listen for size changes we also need to remove the object listened
to when it's deleted.
@ -85,5 +85,5 @@ index b3fab41ca..10b6baa02 100644
+ }
}
--
2.37.2
2.37.3

View File

@ -1,7 +1,7 @@
From d0642867ab629daf36a1194274a74758111140be Mon Sep 17 00:00:00 2001
From 74e8db97fdb9b55c4b4614b83f4bf17e00df55e9 Mon Sep 17 00:00:00 2001
From: Mitch Curtis <mitch.curtis@qt.io>
Date: Mon, 18 Jul 2022 15:21:49 +0800
Subject: [PATCH 6/6] Fix scroll bars not showing up when binding to standalone
Subject: [PATCH 5/5] Fix scroll bars not showing up when binding to standalone
contentItem
908aa77d16e00f2bccc0ddae0f8b61955c56a6a1 hid old scroll bars, but
@ -175,5 +175,5 @@ index 0e8b08352..cd4931184 100644
+ }
}
--
2.37.2
2.37.3

View File

@ -1,443 +0,0 @@
From 59cc1cc5b3719713598a1f426d82a9d895b5dccb Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Fri, 17 Jun 2022 15:24:13 +0200
Subject: [PATCH 5/6] Revert "Allow creation of custom QQuickPopupItem-derived
types"
This reverts commit 6b8a9673.
The follow-up commit a063cd0b
causes QTBUG-94764, so we don't need this enabling change for now.
Task-number: QTBUG-83630
Task-number: QTBUG-94764
Pick-to: 5.15 6.1 6.2
Change-Id: I1aec8571dcdcc2103d0e56c3d0bbfc4a4872d8db
Reviewed-by: default avatarRichard Moe Gustavsen <richard.gustavsen@qt.io>
(cherry-picked from qtdeclarative b69d071c10dfa4c5d7b62692b8a9d7bb659a4ab5)
---
src/quicktemplates2/qquickmenu.cpp | 1 -
src/quicktemplates2/qquickmenu_p_p.h | 2 +-
src/quicktemplates2/qquickpopup.cpp | 17 +--
src/quicktemplates2/qquickpopup_p_p.h | 4 +-
src/quicktemplates2/qquickpopupitem.cpp | 70 +++++++------
src/quicktemplates2/qquickpopupitem_p.h | 121 ----------------------
src/quicktemplates2/qquickpopupitem_p_p.h | 80 +++++++++-----
src/quicktemplates2/quicktemplates2.pri | 1 -
8 files changed, 100 insertions(+), 196 deletions(-)
delete mode 100644 src/quicktemplates2/qquickpopupitem_p.h
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index a934fa8ae..0043dddde 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -222,7 +222,6 @@ QQuickMenuPrivate::QQuickMenuPrivate()
void QQuickMenuPrivate::init()
{
Q_Q(QQuickMenu);
- QQuickPopupPrivate::init();
contentModel = new QQmlObjectModel(q);
}
diff --git a/src/quicktemplates2/qquickmenu_p_p.h b/src/quicktemplates2/qquickmenu_p_p.h
index b1fbb1efb..63553f8a5 100644
--- a/src/quicktemplates2/qquickmenu_p_p.h
+++ b/src/quicktemplates2/qquickmenu_p_p.h
@@ -73,7 +73,7 @@ public:
return menu->d_func();
}
- void init() override;
+ void init();
QQuickItem *itemAt(int index) const;
void insertItem(int index, QQuickItem *item);
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 8a03198e5..bdc6dff27 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -275,21 +275,9 @@ QQuickPopupPrivate::QQuickPopupPrivate()
void QQuickPopupPrivate::init()
{
Q_Q(QQuickPopup);
- createPopupItem();
+ popupItem = new QQuickPopupItem(q);
popupItem->setVisible(false);
q->setParentItem(qobject_cast<QQuickItem *>(parent));
- connectToPopupItem();
-}
-
-void QQuickPopupPrivate::createPopupItem()
-{
- Q_Q(QQuickPopup);
- popupItem = new QQuickPopupItem(q);
-}
-
-void QQuickPopupPrivate::connectToPopupItem()
-{
- Q_Q(QQuickPopup);
QObject::connect(popupItem, &QQuickControl::paddingChanged, q, &QQuickPopup::paddingChanged);
QObject::connect(popupItem, &QQuickControl::backgroundChanged, q, &QQuickPopup::backgroundChanged);
QObject::connect(popupItem, &QQuickControl::contentItemChanged, q, &QQuickPopup::contentItemChanged);
@@ -854,7 +842,8 @@ QQuickPopup::QQuickPopup(QObject *parent)
QQuickPopup::QQuickPopup(QQuickPopupPrivate &dd, QObject *parent)
: QObject(dd, parent)
{
- dd.init();
+ Q_D(QQuickPopup);
+ d->init();
}
QQuickPopup::~QQuickPopup()
diff --git a/src/quicktemplates2/qquickpopup_p_p.h b/src/quicktemplates2/qquickpopup_p_p.h
index 2fc0f133d..ef4b112e2 100644
--- a/src/quicktemplates2/qquickpopup_p_p.h
+++ b/src/quicktemplates2/qquickpopup_p_p.h
@@ -96,9 +96,7 @@ public:
QQmlListProperty<QObject> contentData();
QQmlListProperty<QQuickItem> contentChildren();
- virtual void init();
- void createPopupItem();
- void connectToPopupItem();
+ void init();
void closeOrReject();
bool tryClose(const QPointF &pos, QQuickPopup::ClosePolicy flags);
diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp
index 992d74570..0069b9fc1 100644
--- a/src/quicktemplates2/qquickpopupitem.cpp
+++ b/src/quicktemplates2/qquickpopupitem.cpp
@@ -53,33 +53,38 @@
QT_BEGIN_NAMESPACE
+class QQuickPopupItemPrivate : public QQuickPagePrivate
+{
+ Q_DECLARE_PUBLIC(QQuickPopupItem)
+
+public:
+ QQuickPopupItemPrivate(QQuickPopup *popup);
+
+ void implicitWidthChanged() override;
+ void implicitHeightChanged() override;
+
+ void resolveFont() override;
+ void resolvePalette() override;
+
+ QQuickItem *getContentItem() override;
+
+ void cancelContentItem() override;
+ void executeContentItem(bool complete = false) override;
+
+ void cancelBackground() override;
+ void executeBackground(bool complete = false) override;
+
+ int backId = 0;
+ int escapeId = 0;
+ QQuickPopup *popup = nullptr;
+};
+
QQuickPopupItemPrivate::QQuickPopupItemPrivate(QQuickPopup *popup)
: popup(popup)
{
isTabFence = true;
}
-void QQuickPopupItemPrivate::init()
-{
- Q_Q(QQuickPopupItem);
- q->setParent(popup);
- q->setFlag(QQuickItem::ItemIsFocusScope);
- q->setAcceptedMouseButtons(Qt::AllButtons);
-#if QT_CONFIG(quicktemplates2_multitouch)
- q->setAcceptTouchEvents(true);
-#endif
-#if QT_CONFIG(cursor)
- q->setCursor(Qt::ArrowCursor);
-#endif
-
-#if QT_CONFIG(quicktemplates2_hover)
- // TODO: switch to QStyleHints::useHoverEffects in Qt 5.8
- q->setHoverEnabled(true);
- // setAcceptHoverEvents(QGuiApplication::styleHints()->useHoverEffects());
- // connect(QGuiApplication::styleHints(), &QStyleHints::useHoverEffectsChanged, this, &QQuickItem::setAcceptHoverEvents);
-#endif
-}
-
void QQuickPopupItemPrivate::implicitWidthChanged()
{
QQuickPagePrivate::implicitWidthChanged();
@@ -156,15 +161,22 @@ void QQuickPopupItemPrivate::executeBackground(bool complete)
QQuickPopupItem::QQuickPopupItem(QQuickPopup *popup)
: QQuickPage(*(new QQuickPopupItemPrivate(popup)), nullptr)
{
- Q_D(QQuickPopupItem);
- d->init();
-}
+ setParent(popup);
+ setFlag(ItemIsFocusScope);
+ setAcceptedMouseButtons(Qt::AllButtons);
+#if QT_CONFIG(quicktemplates2_multitouch)
+ setAcceptTouchEvents(true);
+#endif
+#if QT_CONFIG(cursor)
+ setCursor(Qt::ArrowCursor);
+#endif
-QQuickPopupItem::QQuickPopupItem(QQuickPopupItemPrivate &dd) :
- QQuickPage(dd, nullptr)
-{
- Q_D(QQuickPopupItem);
- d->init();
+#if QT_CONFIG(quicktemplates2_hover)
+ // TODO: switch to QStyleHints::useHoverEffects in Qt 5.8
+ setHoverEnabled(true);
+ // setAcceptHoverEvents(QGuiApplication::styleHints()->useHoverEffects());
+ // connect(QGuiApplication::styleHints(), &QStyleHints::useHoverEffectsChanged, this, &QQuickItem::setAcceptHoverEvents);
+#endif
}
void QQuickPopupItem::grabShortcut()
diff --git a/src/quicktemplates2/qquickpopupitem_p.h b/src/quicktemplates2/qquickpopupitem_p.h
deleted file mode 100644
index df67e7453..000000000
--- a/src/quicktemplates2/qquickpopupitem_p.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:COMM$
-**
-** 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.
-**
-** $QT_END_LICENSE$
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-**
-****************************************************************************/
-
-#ifndef QQUICKPOPUPITEM_P_H
-#define QQUICKPOPUPITEM_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtQuickTemplates2/private/qquickpage_p.h>
-#include <QtQuickTemplates2/private/qquickpage_p_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QQuickPopup;
-class QQuickPopupItemPrivate;
-
-class QQuickPopupItem : public QQuickPage
-{
- Q_OBJECT
-
-public:
- explicit QQuickPopupItem(QQuickPopup *popup);
-
- void grabShortcut();
- void ungrabShortcut();
-
-protected:
- void updatePolish() override;
-
- bool event(QEvent *event) override;
- bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
- void focusInEvent(QFocusEvent *event) override;
- void focusOutEvent(QFocusEvent *event) override;
- void keyPressEvent(QKeyEvent *event) override;
- void keyReleaseEvent(QKeyEvent *event) override;
- void mousePressEvent(QMouseEvent *event) override;
- void mouseMoveEvent(QMouseEvent *event) override;
- void mouseReleaseEvent(QMouseEvent *event) override;
- void mouseDoubleClickEvent(QMouseEvent *event) override;
- void mouseUngrabEvent() override;
-#if QT_CONFIG(quicktemplates2_multitouch)
- void touchEvent(QTouchEvent *event) override;
- void touchUngrabEvent() override;
-#endif
-#if QT_CONFIG(wheelevent)
- void wheelEvent(QWheelEvent *event) override;
-#endif
-
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
- void contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) override;
- void fontChange(const QFont &newFont, const QFont &oldFont) override;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
- void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override;
- void mirrorChange() override;
- void itemChange(ItemChange change, const ItemChangeData &data) override;
- void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
- void paletteChange(const QPalette &newPalette, const QPalette &oldPalette) override;
- void enabledChange() override;
-
- QFont defaultFont() const override;
- QPalette defaultPalette() const override;
-
-#if QT_CONFIG(accessibility)
- QAccessible::Role accessibleRole() const override;
- void accessibilityActiveChanged(bool active) override;
-#endif
-
-protected:
- QQuickPopupItem(QQuickPopupItemPrivate &dd);
-
-private:
- Q_DISABLE_COPY(QQuickPopupItem)
- Q_DECLARE_PRIVATE(QQuickPopupItem)
- friend class QQuickPopup;
-};
-
-QT_END_NAMESPACE
-
-#endif // QQUICKPOPUPITEM_P_H
diff --git a/src/quicktemplates2/qquickpopupitem_p_p.h b/src/quicktemplates2/qquickpopupitem_p_p.h
index 65b33b21e..a12e43e0a 100644
--- a/src/quicktemplates2/qquickpopupitem_p_p.h
+++ b/src/quicktemplates2/qquickpopupitem_p_p.h
@@ -48,39 +48,67 @@
// We mean it.
//
-#include <QtQuickTemplates2/private/qquickpopupitem_p.h>
-#include <QtQuickTemplates2/private/qquickpalette_p.h>
+#include <QtQuickTemplates2/private/qquickpage_p.h>
QT_BEGIN_NAMESPACE
class QQuickPopup;
-
-class QQuickPopupItemPrivate : public QQuickPagePrivate
+class QQuickPopupItemPrivate;
+class QQuickPopupItem : public QQuickPage
{
- Q_DECLARE_PUBLIC(QQuickPopupItem)
+ Q_OBJECT
public:
- QQuickPopupItemPrivate(QQuickPopup *popup);
-
- void init();
-
- void implicitWidthChanged() override;
- void implicitHeightChanged() override;
-
- void resolveFont() override;
- void resolvePalette() override;
-
- QQuickItem *getContentItem() override;
-
- void cancelContentItem() override;
- void executeContentItem(bool complete = false) override;
-
- void cancelBackground() override;
- void executeBackground(bool complete = false) override;
-
- int backId = 0;
- int escapeId = 0;
- QQuickPopup *popup = nullptr;
+ explicit QQuickPopupItem(QQuickPopup *popup);
+
+ void grabShortcut();
+ void ungrabShortcut();
+
+protected:
+ void updatePolish() override;
+
+ bool event(QEvent *event) override;
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
+ void focusInEvent(QFocusEvent *event) override;
+ void focusOutEvent(QFocusEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseDoubleClickEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+#if QT_CONFIG(quicktemplates2_multitouch)
+ void touchEvent(QTouchEvent *event) override;
+ void touchUngrabEvent() override;
+#endif
+#if QT_CONFIG(wheelevent)
+ void wheelEvent(QWheelEvent *event) override;
+#endif
+
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
+ void contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) override;
+ void fontChange(const QFont &newFont, const QFont &oldFont) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override;
+ void mirrorChange() override;
+ void itemChange(ItemChange change, const ItemChangeData &data) override;
+ void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
+ void paletteChange(const QPalette &newPalette, const QPalette &oldPalette) override;
+ void enabledChange() override;
+
+ QFont defaultFont() const override;
+ QPalette defaultPalette() const override;
+
+#if QT_CONFIG(accessibility)
+ QAccessible::Role accessibleRole() const override;
+ void accessibilityActiveChanged(bool active) override;
+#endif
+
+private:
+ Q_DISABLE_COPY(QQuickPopupItem)
+ Q_DECLARE_PRIVATE(QQuickPopupItem)
+ friend class QQuickPopup;
};
QT_END_NAMESPACE
diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri
index ba09591bf..fa6929f92 100644
--- a/src/quicktemplates2/quicktemplates2.pri
+++ b/src/quicktemplates2/quicktemplates2.pri
@@ -60,7 +60,6 @@ HEADERS += \
$$PWD/qquickpopup_p_p.h \
$$PWD/qquickpopupanchors_p.h \
$$PWD/qquickpopupanchors_p_p.h \
- $$PWD/qquickpopupitem_p.h \
$$PWD/qquickpopupitem_p_p.h \
$$PWD/qquickpopuppositioner_p_p.h \
$$PWD/qquickpresshandler_p_p.h \
--
2.37.2

View File

@ -2,8 +2,8 @@
Name: qt5-%{qt_module}
Summary: Qt5 - module with set of QtQuick controls for embedded
Version: 5.15.5
Release: 4%{?dist}
Version: 5.15.6
Release: 1%{?dist}
License: GPLv2+ or LGPLv3 and GFDL
Url: http://www.qt.io
@ -14,9 +14,7 @@ Patch1: 0001-Unset-mouseGrabberPopup-if-it-s-removed-from-childre.patch
Patch2: 0002-Ensure-we-don-t-crash-when-changing-sizes-after-clea.patch
Patch3: 0003-QQuickAction-don-t-grab-the-same-shortcut-multiple-t.patch
Patch4: 0004-QQuickAbstractButton-fix-crash-on-destruction.patch
# The following patch breaks compilation. To be fixed
#Patch5: 0005-Revert-Allow-creation-of-custom-QQuickPopupItem-deri.patch
Patch6: 0006-Fix-scroll-bars-not-showing-up-when-binding-to-stand.patch
Patch5: 0005-Fix-scroll-bars-not-showing-up-when-binding-to-stand.patch
# filter qml provides
@ -112,6 +110,9 @@ rm -f %{buildroot}%{_qt5_libdir}/libQt5*.la
%{_libdir}/cmake/Qt5QuickTemplates2/
%changelog
* Tue Sep 20 2022 Jan Grulich <jgrulich@redhat.com> - 5.15.6-1
- 5.15.6
* Mon Sep 12 2022 Marc Deop marcdeop@fedoraproject.org - 5.15.5-4
- Use autosetup macro instead of setup
- Due to using autosetup, previous patches are now applied

View File

@ -1 +1,2 @@
SHA512 (qtquickcontrols2-everywhere-opensource-src-5.15.5.tar.xz) = febc0dee2408e5843a670420ac368c0a01af3ea1234c7dc6d99e3d2bb447dbe063b59e0c3b943f5a6a0705d207c21d9909787f4b80acab8bef9253714ce82a5a
SHA512 (qtquickcontrols2-everywhere-opensource-src-5.15.6.tar.xz) = 5de1ae719c394a315dc019bdaa876b6b735ca5eed4455b6c4da5e2150c0bc85a6c691ad9124b76e26704aaf799b6067d47fe48d98926ea000407d163441d4114