Drop some unnecessary backports

This commit is contained in:
Jan Grulich 2023-08-21 19:29:04 +02:00
parent 6ad7f138fe
commit 12ab19e10b
26 changed files with 57 additions and 536 deletions

View File

@ -1,7 +1,7 @@
From dacd0c6b3466258d175e7119a8e4836171400820 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:03:46 +0200
Subject: [PATCH 01/25] Use Wayland by default on GNOME
Subject: [PATCH 01/22] Use Wayland by default on GNOME
---
src/gui/kernel/qguiapplication.cpp | 9 +--------

View File

@ -1,7 +1,7 @@
From 488d73ca92deb669abc724c82dbd3206597107fd Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:04:21 +0200
Subject: [PATCH 02/25] Add QPlatformTheme::Appearance for detecting light/dark
Subject: [PATCH 02/22] Add QPlatformTheme::Appearance for detecting light/dark
modes
And implement it on Windows and macOS.

View File

@ -1,7 +1,7 @@
From cf96f7cecf8d02722e303687c1f30361a4a55cd0 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:06:29 +0200
Subject: [PATCH 03/25] Add enum class Qt::Appearance
Subject: [PATCH 03/22] Add enum class Qt::Appearance
It has been decided to add an appearance property in QStyleHints, which
will be propagated to classes that do not include QPlatformTheme.

View File

@ -1,7 +1,7 @@
From 1d693df019b1ebf54980a015000b01ae947f82ee Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:26:39 +0200
Subject: [PATCH 04/25] QGtk3Theme: implement appearance function to detect
Subject: [PATCH 04/22] QGtk3Theme: implement appearance function to detect
dark themes
This allows Qt Quick Controls to detect if a dark theme is in use,

View File

@ -1,7 +1,7 @@
From 3d8874aaf5384818a51f158cd2880b7976c9a93a Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:41:53 +0200
Subject: [PATCH 05/25] Account for dark system themes in qt_fusionPalette
Subject: [PATCH 05/22] Account for dark system themes in qt_fusionPalette
On Ubuntu (Gnome), the Fusion style didn't account for when a dark
theme was set in the system's settings. Neither QGtk3Theme, nor

View File

@ -1,7 +1,7 @@
From 84b0d114d98c58ecf00e20987321182e8e2ba4c1 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:44:00 +0200
Subject: [PATCH 06/25] qt_fusionPalette: make links more legible on dark
Subject: [PATCH 06/22] qt_fusionPalette: make links more legible on dark
backgrounds
QPalette's default for Link is Qt::blue, which is difficult to read

View File

@ -1,7 +1,7 @@
From dff40b9fed2b91244d6664342daf859b3aa0375f Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:44:37 +0200
Subject: [PATCH 07/25] Add nullptr check for theme when initializing palette
Subject: [PATCH 07/22] Add nullptr check for theme when initializing palette
---
src/gui/kernel/qplatformtheme.cpp | 6 ++++--

View File

@ -1,7 +1,7 @@
From 240ce954220d713968e608f2766144c7657bceed Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 12:56:06 +0200
Subject: [PATCH 08/25] Replace QPlatformTheme::Appearance by Qt:Appearance
Subject: [PATCH 08/22] Replace QPlatformTheme::Appearance by Qt:Appearance
With the introduction of Qt:Appearance, its predecessor in
QPlatformTheme has become redundant.

View File

@ -1,110 +0,0 @@
From 168ca696f509e0437550cddb80ea61a5d9ee0f1b Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 13:04:13 +0200
Subject: [PATCH 09/25] Rename QGuiApplicationPrivate::notifyThemeChanged to
handleThemeChanged
The work done by QGuiApplicationPrivate in response to a theme change
goes beyond notifying.
---
src/gui/kernel/qguiapplication.cpp | 26 +++++++++++++-------------
src/gui/kernel/qguiapplication_p.h | 2 +-
src/widgets/kernel/qapplication.cpp | 4 ++--
src/widgets/kernel/qapplication_p.h | 2 +-
4 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index a217719ea8..ddde913064 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -2563,13 +2563,25 @@ void QGuiApplicationPrivate::processSafeAreaMarginsChangedEvent(QWindowSystemInt
void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::ThemeChangeEvent *tce)
{
if (self)
- self->notifyThemeChanged();
+ self->handleThemeChanged();
if (QWindow *window = tce->window.data()) {
QEvent e(QEvent::ThemeChange);
QGuiApplication::sendSpontaneousEvent(window, &e);
}
}
+void QGuiApplicationPrivate::handleThemeChanged()
+{
+ updatePalette();
+
+ if (!(applicationResourceFlags & ApplicationFontExplicitlySet)) {
+ const auto locker = qt_scoped_lock(applicationFontMutex);
+ clearFontUnlocked();
+ initFontUnlocked();
+ }
+ initThemeHints();
+}
+
void QGuiApplicationPrivate::processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent *e)
{
if (e->window.isNull())
@@ -4249,18 +4261,6 @@ QPixmap QGuiApplicationPrivate::getPixmapCursor(Qt::CursorShape cshape)
return QPixmap();
}
-void QGuiApplicationPrivate::notifyThemeChanged()
-{
- updatePalette();
-
- if (!(applicationResourceFlags & ApplicationFontExplicitlySet)) {
- const auto locker = qt_scoped_lock(applicationFontMutex);
- clearFontUnlocked();
- initFontUnlocked();
- }
- initThemeHints();
-}
-
#if QT_CONFIG(draganddrop)
void QGuiApplicationPrivate::notifyDragStarted(const QDrag *drag)
{
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index 261add1ba4..a13a797ec3 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -327,7 +327,7 @@ public:
static void updatePalette();
protected:
- virtual void notifyThemeChanged();
+ virtual void handleThemeChanged();
static bool setPalette(const QPalette &palette);
virtual QPalette basePalette() const;
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 1a0ac0cc3c..2d3ed99a83 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -4371,9 +4371,9 @@ void QApplicationPrivate::translateTouchCancel(QTouchDevice *device, ulong times
}
}
-void QApplicationPrivate::notifyThemeChanged()
+void QApplicationPrivate::handleThemeChanged()
{
- QGuiApplicationPrivate::notifyThemeChanged();
+ QGuiApplicationPrivate::handleThemeChanged();
qt_init_tooltip_palette();
}
diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h
index ab6d85aeb9..3a7214d01e 100644
--- a/src/widgets/kernel/qapplication_p.h
+++ b/src/widgets/kernel/qapplication_p.h
@@ -160,7 +160,7 @@ public:
static QStyle *app_style;
protected:
- void notifyThemeChanged() override;
+ void handleThemeChanged() override;
QPalette basePalette() const override;
void handlePaletteChanged(const char *className = nullptr) override;
--
2.41.0

View File

@ -1,7 +1,7 @@
From 8c9d7b5f33707803b67c737afa18c80e5a4cf229 Mon Sep 17 00:00:00 2001
From d0f0010b49eb40477ea42496063766199e857312 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 13:43:29 +0200
Subject: [PATCH 12/25] Sync and assert StandardPixmap enums in QPlatformTheme
Subject: [PATCH 09/22] Sync and assert StandardPixmap enums in QPlatformTheme
and QStyle
Add missing enum values in QPlatformTheme::standardPixmap to sync with

View File

@ -1,7 +1,7 @@
From 544c063ad74bfcc5c8e9f7d6c2f4e7b6301df497 Mon Sep 17 00:00:00 2001
From b6bf671270aea7bddbb98c69ff395ae649d0edf8 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 15:38:13 +0200
Subject: [PATCH 13/25] QGtk3Theme: subscribe to theme hint changes
Subject: [PATCH 10/22] QGtk3Theme: subscribe to theme hint changes
---
.../platformthemes/gtk3/qgtk3theme.cpp | 20 +++++++++++++++++++

View File

@ -1,102 +0,0 @@
From df8ef75321929d429c1f912453b63e85e98455c5 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 13:30:15 +0200
Subject: [PATCH 10/25] Send ThemeChange event to all windows when system theme
changes
The QWSI event for theme change has an optional window parameter to
specify the window affected, but most platform react to global theme
changes, and end up passing nullptr into the event.
The reasonable thing to do in QGuiApplication in that case is send
a theme change event to every QWindow, so that they are all notified
about the situation.
This approach is what the Windows platform plugin was doing already,
but did so by iterating manually over the windows, resulting in multiple
calls to QGuiApplicationPrivate::handleThemeChanged -- one for each QWSI
event.
---
src/gui/kernel/qguiapplication.cpp | 9 +++++----
src/gui/kernel/qwindowsysteminterface.h | 2 +-
src/plugins/platforms/cocoa/qcocoatheme.mm | 2 +-
src/plugins/platforms/ios/qiosscreen.mm | 2 +-
src/plugins/platforms/windows/qwindowscontext.cpp | 3 +--
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index ddde913064..64e44406fb 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -2564,10 +2564,11 @@ void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::
{
if (self)
self->handleThemeChanged();
- if (QWindow *window = tce->window.data()) {
- QEvent e(QEvent::ThemeChange);
- QGuiApplication::sendSpontaneousEvent(window, &e);
- }
+
+ QEvent themeChangeEvent(QEvent::ThemeChange);
+ const QWindowList windows = tce->window ? QWindowList{tce->window} : window_list;
+ for (auto *window : windows)
+ QGuiApplication::sendSpontaneousEvent(window, &themeChangeEvent);
}
void QGuiApplicationPrivate::handleThemeChanged()
diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h
index 20baef12c1..5967c8f580 100644
--- a/src/gui/kernel/qwindowsysteminterface.h
+++ b/src/gui/kernel/qwindowsysteminterface.h
@@ -250,7 +250,7 @@ public:
static void handleScreenRefreshRateChange(QScreen *screen, qreal newRefreshRate);
template<typename Delivery = QWindowSystemInterface::DefaultDelivery>
- static void handleThemeChange(QWindow *window);
+ static void handleThemeChange(QWindow *window = nullptr);
static void handleFileOpenEvent(const QString& fileName);
static void handleFileOpenEvent(const QUrl &url);
diff --git a/src/plugins/platforms/cocoa/qcocoatheme.mm b/src/plugins/platforms/cocoa/qcocoatheme.mm
index cd2e7ef90a..269b580361 100644
--- a/src/plugins/platforms/cocoa/qcocoatheme.mm
+++ b/src/plugins/platforms/cocoa/qcocoatheme.mm
@@ -322,7 +322,7 @@ void QCocoaTheme::handleSystemThemeChange()
QFontCache::instance()->clear();
}
- QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>(nullptr);
+ QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>();
}
bool QCocoaTheme::usePlatformNativeDialog(DialogType dialogType) const
diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm
index a83d495043..6f0858a4a0 100644
--- a/src/plugins/platforms/ios/qiosscreen.mm
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -216,7 +216,7 @@ static QIOSScreen* qtPlatformScreenFor(UIScreen *uiScreen)
if (self.screen == UIScreen.mainScreen) {
if (previousTraitCollection.userInterfaceStyle != self.traitCollection.userInterfaceStyle) {
QIOSTheme::initializeSystemPalette();
- QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>(nullptr);
+ QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>();
}
}
}
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index d5c3022080..cc9857673b 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -1237,8 +1237,7 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
}
if ((options & QWindowsIntegration::DarkModeStyle) != 0) {
QWindowsTheme::instance()->refresh();
- for (QWindowsWindow *w : d->m_windows)
- QWindowSystemInterface::handleThemeChange(w->window());
+ QWindowSystemInterface::handleThemeChange();
}
}
return d->m_screenManager.handleScreenChanges();
--
2.41.0

View File

@ -1,7 +1,7 @@
From ff4c01410f56001c59ed9628d7365a44019ce85c Mon Sep 17 00:00:00 2001
From 232211f5867878e64bed10d4dff0f94a6326a94f Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 15:38:38 +0200
Subject: [PATCH 14/25] Gtk3Theme: set XCURSOR_SIZE and XCURSOR_THEME for
Subject: [PATCH 11/22] Gtk3Theme: set XCURSOR_SIZE and XCURSOR_THEME for
wayland sessions
GNOME doesn't set these for Wayland session and without those env

View File

@ -1,261 +0,0 @@
From dc53c50184021944e26a3986236f37a7868951ad Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 13:38:50 +0200
Subject: [PATCH 11/25] Propagate appearance property from QPlatformTheme to
QStyleHints
Implement appearance property, getter and notifier in QStyleHints.
Update appearance property in QStyleHints when handling theme
change in QGuiApplicationPrivate.
---
.../5.15.10/QtGui/private/qstylehints_p.h | 1 +
src/gui/kernel/kernel.pri | 1 +
src/gui/kernel/qguiapplication.cpp | 16 ++++++
src/gui/kernel/qguiapplication_p.h | 2 +
src/gui/kernel/qstylehints.cpp | 51 +++++++++++-------
src/gui/kernel/qstylehints.h | 3 ++
src/gui/kernel/qstylehints_p.h | 53 +++++++++++++++++++
7 files changed, 108 insertions(+), 19 deletions(-)
create mode 100644 include/QtGui/5.15.10/QtGui/private/qstylehints_p.h
create mode 100644 src/gui/kernel/qstylehints_p.h
diff --git a/include/QtGui/5.15.10/QtGui/private/qstylehints_p.h b/include/QtGui/5.15.10/QtGui/private/qstylehints_p.h
new file mode 100644
index 0000000000..fa8b8505a6
--- /dev/null
+++ b/include/QtGui/5.15.10/QtGui/private/qstylehints_p.h
@@ -0,0 +1 @@
+#include "../../../../../src/gui/kernel/qstylehints_p.h"
diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri
index 9c80f1e2cc..af9385b120 100644
--- a/src/gui/kernel/kernel.pri
+++ b/src/gui/kernel/kernel.pri
@@ -59,6 +59,7 @@ HEADERS += \
kernel/qscreen.h \
kernel/qscreen_p.h \
kernel/qstylehints.h \
+ kernel/qstylehints_p.h \
kernel/qtouchdevice.h \
kernel/qtouchdevice_p.h \
kernel/qplatformsharedgraphicscache.h \
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 64e44406fb..7c942dc233 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -74,6 +74,7 @@
#include <QtGui/qgenericpluginfactory.h>
#include <QtGui/qstylehints.h>
+#include <QtGui/private/qstylehints_p.h>
#include <QtGui/qinputmethod.h>
#include <QtGui/qpixmapcache.h>
#include <qpa/qplatforminputcontext.h>
@@ -2569,6 +2570,21 @@ void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::
const QWindowList windows = tce->window ? QWindowList{tce->window} : window_list;
for (auto *window : windows)
QGuiApplication::sendSpontaneousEvent(window, &themeChangeEvent);
+
+ QStyleHintsPrivate::get(QGuiApplication::styleHints())->setAppearance(appearance());
+}
+
+/*!
+ \internal
+ \brief QGuiApplicationPrivate::appearance
+ \return the platform theme's appearance
+ or Qt::Appearance::Unknown if a platform theme cannot be established
+ Qt::Appearance.
+ */
+Qt::Appearance QGuiApplicationPrivate::appearance()
+{
+ return platformTheme() ? platformTheme()->appearance()
+ : Qt::Appearance::Unknown;
}
void QGuiApplicationPrivate::handleThemeChanged()
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index a13a797ec3..1e7f826c5b 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -343,6 +343,8 @@ private:
friend class QDragManager;
+ static Qt::Appearance appearance();
+
static QGuiApplicationPrivate *self;
static QTouchDevice *m_fakeTouchDevice;
static int m_fakeMouseSourcePointId;
diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp
index 288bdf1b3c..d4766227ef 100644
--- a/src/gui/kernel/qstylehints.cpp
+++ b/src/gui/kernel/qstylehints.cpp
@@ -38,6 +38,7 @@
****************************************************************************/
#include <qstylehints.h>
+#include "qstylehints_p.h"
#include <qpa/qplatformintegration.h>
#include <qpa/qplatformtheme.h>
#include <private/qguiapplication_p.h>
@@ -79,25 +80,6 @@ static inline QVariant themeableHint(QPlatformTheme::ThemeHint th)
return QPlatformTheme::defaultThemeHint(th);
}
-class QStyleHintsPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QStyleHints)
-public:
- int m_mouseDoubleClickInterval = -1;
- int m_mousePressAndHoldInterval = -1;
- int m_startDragDistance = -1;
- int m_startDragTime = -1;
- int m_keyboardInputInterval = -1;
- int m_cursorFlashTime = -1;
- int m_tabFocusBehavior = -1;
- int m_uiEffects = -1;
- int m_showShortcutsInContextMenus = -1;
- int m_wheelScrollLines = -1;
- int m_mouseQuickSelectionThreshold = -1;
- int m_mouseDoubleClickDistance = -1;
- int m_touchDoubleTapDistance = -1;
-};
-
/*!
\class QStyleHints
\since 5.0
@@ -176,6 +158,17 @@ int QStyleHints::touchDoubleTapDistance() const
themeableHint(QPlatformTheme::TouchDoubleTapDistance).toInt();
}
+/*!
+ \property QStyleHints::appearance
+ \brief the appearance of the platform theme
+ \sa Qt::Appearance
+ \since 6.5
+*/
+Qt::Appearance QStyleHints::appearance() const
+{
+ return d_func()->appearance();
+}
+
/*!
Sets the \a mousePressAndHoldInterval.
\internal
@@ -620,6 +613,26 @@ int QStyleHints::mouseQuickSelectionThreshold() const
return themeableHint(QPlatformTheme::MouseQuickSelectionThreshold, QPlatformIntegration::MouseQuickSelectionThreshold).toInt();
}
+/*!
+ \internal
+ QStyleHintsPrivate::setAppearance - set a new appearance.
+ Set \a appearance as the new appearance of the QStyleHints.
+ The appearanceChanged signal will be emitted if present and new appearance differ.
+ */
+void QStyleHintsPrivate::setAppearance(Qt::Appearance appearance)
+{
+ if (m_appearance != appearance) {
+ m_appearance = appearance;
+ emit q_func()->appearanceChanged(appearance);
+ }
+}
+
+QStyleHintsPrivate *QStyleHintsPrivate::get(QStyleHints *q)
+{
+ Q_ASSERT(q);
+ return q->d_func();
+}
+
QT_END_NAMESPACE
#include "moc_qstylehints.cpp"
diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h
index 30d8fdc64d..3cd540b27a 100644
--- a/src/gui/kernel/qstylehints.h
+++ b/src/gui/kernel/qstylehints.h
@@ -76,6 +76,7 @@ class Q_GUI_EXPORT QStyleHints : public QObject
Q_PROPERTY(int mouseQuickSelectionThreshold READ mouseQuickSelectionThreshold WRITE setMouseQuickSelectionThreshold NOTIFY mouseQuickSelectionThresholdChanged FINAL)
Q_PROPERTY(int mouseDoubleClickDistance READ mouseDoubleClickDistance STORED false CONSTANT FINAL)
Q_PROPERTY(int touchDoubleTapDistance READ touchDoubleTapDistance STORED false CONSTANT FINAL)
+ Q_PROPERTY(Qt::Appearance appearance READ appearance NOTIFY appearanceChanged FINAL)
public:
void setMouseDoubleClickInterval(int mouseDoubleClickInterval);
@@ -112,6 +113,7 @@ public:
void setWheelScrollLines(int scrollLines);
void setMouseQuickSelectionThreshold(int threshold);
int mouseQuickSelectionThreshold() const;
+ Qt::Appearance appearance() const;
Q_SIGNALS:
void cursorFlashTimeChanged(int cursorFlashTime);
@@ -125,6 +127,7 @@ Q_SIGNALS:
void showShortcutsInContextMenusChanged(bool);
void wheelScrollLinesChanged(int scrollLines);
void mouseQuickSelectionThresholdChanged(int threshold);
+ void appearanceChanged(Qt::Appearance appearance);
private:
friend class QGuiApplication;
diff --git a/src/gui/kernel/qstylehints_p.h b/src/gui/kernel/qstylehints_p.h
new file mode 100644
index 0000000000..4a16fbef01
--- /dev/null
+++ b/src/gui/kernel/qstylehints_p.h
@@ -0,0 +1,53 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QSTYLEHINTS_P_H
+#define QSTYLEHINTS_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 <qpa/qplatformintegration.h>
+#include <QPalette>
+#include <private/qguiapplication_p.h>
+#include "qstylehints.h"
+
+QT_BEGIN_NAMESPACE
+
+class QStyleHintsPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QStyleHints)
+public:
+ int m_mouseDoubleClickInterval = -1;
+ int m_mousePressAndHoldInterval = -1;
+ int m_startDragDistance = -1;
+ int m_startDragTime = -1;
+ int m_keyboardInputInterval = -1;
+ int m_cursorFlashTime = -1;
+ int m_tabFocusBehavior = -1;
+ int m_uiEffects = -1;
+ int m_showShortcutsInContextMenus = -1;
+ int m_wheelScrollLines = -1;
+ int m_mouseQuickSelectionThreshold = -1;
+ int m_mouseDoubleClickDistance = -1;
+ int m_touchDoubleTapDistance = -1;
+
+ Qt::Appearance appearance() const { return m_appearance; };
+ void setAppearance(Qt::Appearance appearance);
+ static QStyleHintsPrivate *get(QStyleHints *q);
+
+private:
+ Qt::Appearance m_appearance = Qt::Appearance::Unknown;
+};
+
+QT_END_NAMESPACE
+
+#endif
--
2.41.0

View File

@ -1,7 +1,7 @@
From fc0d325fee69cc3fa5f415b1e83592376adeb061 Mon Sep 17 00:00:00 2001
From dc373fc0d7dc14107e06aca4b5664c830d681494 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 26 Jul 2023 15:39:31 +0200
Subject: [PATCH 15/25] Gtk3: fix stack smashing on mismatch between bool and
Subject: [PATCH 12/22] Gtk3: fix stack smashing on mismatch between bool and
gboolean
Glib is written in C and predates C99 (though not really, glib 2.0 was

View File

@ -1,7 +1,7 @@
From 152d72c30a089a08282c05fe9216ac00542dfd46 Mon Sep 17 00:00:00 2001
From 753c0dea114812a2d3b721cb72fda1b49a3c38c2 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 11:54:44 +0200
Subject: [PATCH 16/25] Re-implement palette, standardPixmap, file icons, fonts
Subject: [PATCH 13/22] Re-implement palette, standardPixmap, file icons, fonts
in QGtk3Theme
Read theme colors from GTK3 style context and build platform theme
@ -2505,7 +2505,7 @@ index 0000000000..b3680eb7dc
+#endif // QGTK3JSON_P_H
diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
new file mode 100644
index 0000000000..55c7c8eff8
index 0000000000..0a1fa6ef97
--- /dev/null
+++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
@@ -0,0 +1,470 @@
@ -2717,7 +2717,7 @@ index 0000000000..55c7c8eff8
+{
+ clear();
+ populateMap();
+ QWindowSystemInterface::handleThemeChange();
+ QWindowSystemInterface::handleThemeChange(nullptr);
+}
+
+void QGtk3Storage::populateMap()

View File

@ -1,7 +1,7 @@
From 01ae45ce9cca19e96875eda74bf6b9168f90e464 Mon Sep 17 00:00:00 2001
From 376815da4038c757a42f316c4cb7e2a6793fec00 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:35:44 +0200
Subject: [PATCH 17/25] GTK3 theme: simplify code
Subject: [PATCH 14/22] GTK3 theme: simplify code
There's no need to first convert to QString and then convert back to
QByteArray.

View File

@ -1,7 +1,7 @@
From f44986a54facefafeed851a7db902867f701208b Mon Sep 17 00:00:00 2001
From 40d1e750fd1b0f646724b383928b8f70a7a3abe8 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:36:14 +0200
Subject: [PATCH 18/25] Fix checkbox and radiobutton background in QGtk3Theme
Subject: [PATCH 15/22] Fix checkbox and radiobutton background in QGtk3Theme
The background color for radio buttons and checkboxes was not
correctly read from the current GTK3 theme in light mode.
@ -15,7 +15,7 @@ palettes for checkboxes and radio buttons.
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
index 55c7c8eff8..1a9f88f6df 100644
index 0a1fa6ef97..d5d0e2c8e6 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
@@ -377,7 +377,6 @@ void QGtk3Storage::createMapping()

View File

@ -1,7 +1,7 @@
From e35349100e0f8fc21643c0fa514af5f6f8950097 Mon Sep 17 00:00:00 2001
From 615966a0e855712898ba92681a08825f4b322e4b Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:38:53 +0200
Subject: [PATCH 19/25] Cleanup QGtk3Theme
Subject: [PATCH 16/22] Cleanup QGtk3Theme
1. Remove unused include.
2. Replace unnecessary null checks with asserts.

View File

@ -1,7 +1,7 @@
From 45a629fb6495c2469c89e1bf797ee84214e7e661 Mon Sep 17 00:00:00 2001
From 8f256a33fa60b249ee6fc7347f917f29a11c1e32 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:40:32 +0200
Subject: [PATCH 20/25] Detect appearance by colors unless GTK theme name
Subject: [PATCH 17/22] Detect appearance by colors unless GTK theme name
contains "dark"
QGtk3Theme detects the appearance property by theme name: If the name
@ -68,7 +68,7 @@ index 8997a64e76..e04025923d 100644
static int toGtkState(const QString &state);
static const QLatin1String fromGtkState(GtkStateFlags state);
diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
index 1a9f88f6df..c206b4d3b5 100644
index d5d0e2c8e6..0b6b8e8523 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
@@ -222,7 +222,7 @@ void QGtk3Storage::populateMap()

View File

@ -1,7 +1,7 @@
From 3491415f1e2f60cae47273af4810db1bfda81394 Mon Sep 17 00:00:00 2001
From d998c808ece0fb3e243bb28913a27bbedf0db974 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:41:06 +0200
Subject: [PATCH 21/25] Change parsing log output in QGtk3Json from qCDebug to
Subject: [PATCH 18/22] Change parsing log output in QGtk3Json from qCDebug to
qCInfo
When a palette mapping is imported from a Json file, parsing errors are

View File

@ -1,7 +1,7 @@
From e22d4e2a63976fe6f88266d8f2bde002b12b0744 Mon Sep 17 00:00:00 2001
From fa0c84d609a44aa630dbbb498ffe3bf11326647e Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:42:04 +0200
Subject: [PATCH 22/25] Document QGtk3Interface
Subject: [PATCH 19/22] Document QGtk3Interface
Add internal documentation to header and implementation of
QGtk3Interface

View File

@ -1,7 +1,7 @@
From 4d4cb6a17e5890ef1ee7ac0398d7b5ecdf77d48f Mon Sep 17 00:00:00 2001
From 65aff839101ef829c14b69a815a34eeda00abd3e Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:42:49 +0200
Subject: [PATCH 23/25] Document QGtk3Storage
Subject: [PATCH 20/22] Document QGtk3Storage
Add internal documentation to header and implementation of
QGtk3Storage
@ -11,7 +11,7 @@ QGtk3Storage
2 files changed, 193 insertions(+), 39 deletions(-)
diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
index c206b4d3b5..0f53d526b8 100644
index 0b6b8e8523..7775ac66e4 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
@@ -24,7 +24,26 @@ QGtk3Storage::QGtk3Storage()
@ -153,7 +153,7 @@ index c206b4d3b5..0f53d526b8 100644
{
clear();
@@ -209,6 +278,54 @@ void QGtk3Storage::handleThemeChange()
QWindowSystemInterface::handleThemeChange();
QWindowSystemInterface::handleThemeChange(nullptr);
}
+/*!

View File

@ -1,7 +1,7 @@
From 5ad394475f26725d854a0c4c733ffcde8f3bbf15 Mon Sep 17 00:00:00 2001
From dfb10f3d3b689c172e53a94074b696d1eb9e6acd Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:44:11 +0200
Subject: [PATCH 24/25] QGtk3Theme: Improve fixed font delivery
Subject: [PATCH 21/22] QGtk3Theme: Improve fixed font delivery
The gtk_fixed widget was used as a reference to obtain a fixed font
and HeaderViewFont.

View File

@ -1,7 +1,7 @@
From 7b52f959ccc772b399fb32c9a4eabe37dc572db6 Mon Sep 17 00:00:00 2001
From 410808ea61b30e886830bc8bdc0db562eb0b56b4 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 27 Jul 2023 12:44:31 +0200
Subject: [PATCH 25/25] QGtk3Theme: Do not default Active WindowText to button
Subject: [PATCH 22/22] QGtk3Theme: Do not default Active WindowText to button
foreground
QGtk3Theme uses the GTK button foreground as a default for the
@ -32,7 +32,7 @@ Entry Text / Normal Text / qt_fusionPalette
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
index 0f53d526b8..df7f7c77b8 100644
index 7775ac66e4..fb4069ba3c 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp
@@ -538,7 +538,6 @@ void QGtk3Storage::createMapping()

View File

@ -163,23 +163,20 @@ Patch154: 0005-Account-for-dark-system-themes-in-qt_fusionPalette.patch
Patch155: 0006-qt_fusionPalette-make-links-more-legible-on-dark-bac.patch
Patch156: 0007-Add-nullptr-check-for-theme-when-initializing-palett.patch
Patch157: 0008-Replace-QPlatformTheme-Appearance-by-Qt-Appearance.patch
Patch158: 0009-Rename-QGuiApplicationPrivate-notifyThemeChanged-to-.patch
Patch159: 0010-Send-ThemeChange-event-to-all-windows-when-system-th.patch
Patch160: 0011-Propagate-appearance-property-from-QPlatformTheme-to.patch
Patch161: 0012-Sync-and-assert-StandardPixmap-enums-in-QPlatformThe.patch
Patch162: 0013-QGtk3Theme-subscribe-to-theme-hint-changes.patch
Patch163: 0014-Gtk3Theme-set-XCURSOR_SIZE-and-XCURSOR_THEME-for-way.patch
Patch164: 0015-Gtk3-fix-stack-smashing-on-mismatch-between-bool-and.patch
Patch165: 0016-Re-implement-palette-standardPixmap-file-icons-fonts.patch
Patch166: 0017-GTK3-theme-simplify-code.patch
Patch167: 0018-Fix-checkbox-and-radiobutton-background-in-QGtk3Them.patch
Patch168: 0019-Cleanup-QGtk3Theme.patch
Patch169: 0020-Detect-appearance-by-colors-unless-GTK-theme-name-co.patch
Patch170: 0021-Change-parsing-log-output-in-QGtk3Json-from-qCDebug-.patch
Patch171: 0022-Document-QGtk3Interface.patch
Patch172: 0023-Document-QGtk3Storage.patch
Patch173: 0024-QGtk3Theme-Improve-fixed-font-delivery.patch
Patch174: 0025-QGtk3Theme-Do-not-default-Active-WindowText-to-butto.patch
Patch158: 0009-Sync-and-assert-StandardPixmap-enums-in-QPlatformThe.patch
Patch159: 0010-QGtk3Theme-subscribe-to-theme-hint-changes.patch
Patch160: 0011-Gtk3Theme-set-XCURSOR_SIZE-and-XCURSOR_THEME-for-way.patch
Patch161: 0012-Gtk3-fix-stack-smashing-on-mismatch-between-bool-and.patch
Patch162: 0013-Re-implement-palette-standardPixmap-file-icons-fonts.patch
Patch163: 0014-GTK3-theme-simplify-code.patch
Patch164: 0015-Fix-checkbox-and-radiobutton-background-in-QGtk3Them.patch
Patch165: 0016-Cleanup-QGtk3Theme.patch
Patch166: 0017-Detect-appearance-by-colors-unless-GTK-theme-name-co.patch
Patch167: 0018-Change-parsing-log-output-in-QGtk3Json-from-qCDebug-.patch
Patch168: 0019-Document-QGtk3Interface.patch
Patch169: 0020-Document-QGtk3Storage.patch
Patch170: 0021-QGtk3Theme-Improve-fixed-font-delivery.patch
Patch171: 0022-QGtk3Theme-Do-not-default-Active-WindowText-to-butto.patch
# Latest QGnomePlatform needs to be specified to be used
Patch200: qtbase-use-qgnomeplatform-as-default-platform-theme-on-gnome.patch
@ -488,9 +485,6 @@ Qt5 libraries used for drawing widgets and OpenGL items.
%patch -P169 -p1
%patch -P170 -p1
%patch -P171 -p1
%patch -P172 -p1
%patch -P173 -p1
%patch -P174 -p1
%endif
%if 0%{?fedora} < 39