From c984e6a1f9467529160d27193b4414f1efeeef41 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 23 Jul 2019 09:46:02 +0200 Subject: [PATCH] Use Gnome platform theme on Gnome wayland sessions --- qt5-qtwayland.spec | 13 ++++++- ...atform-theme-on-gnome-based-desktops.patch | 39 +++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch diff --git a/qt5-qtwayland.spec b/qt5-qtwayland.spec index 85fbaba..a8a380a 100644 --- a/qt5-qtwayland.spec +++ b/qt5-qtwayland.spec @@ -3,7 +3,7 @@ Summary: Qt5 - Wayland platform support and QtCompositor module Name: qt5-%{qt_module} Version: 5.12.4 -Release: 4%{?dist} +Release: 5%{?dist} License: LGPLv3 Url: http://www.qt.io @@ -19,12 +19,17 @@ Patch4: qtwayland-make-handleupdate-aware-of-exposure-changes.patch Patch5: qtwayland-dont-crash-when-start-drag-without-dragfocus.patch Patch6: qtwayland-fix-expose-event-compression.patch +# Upstreamable patches +# https://fedoraproject.org/wiki/Changes/Qt_Wayland_By_Default_On_Gnome +# https://bugzilla.redhat.com/show_bug.cgi?id=1732129 +Patch50: qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch + # filter qml provides %global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$ BuildRequires: qt5-qtbase-devel >= %{version} BuildRequires: qt5-qtbase-static -BuildRequires: qt5-qtbase-private-devel +BuildRequires: qt5-qtbase-private-devel %{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} BuildRequires: qt5-qtdeclarative-devel @@ -121,6 +126,10 @@ popd %changelog +* Tue Jul 23 2019 Jan Grulich - 5.12.3-5 +- Use Gnome platform theme on Gnome Wayland sessions + Resolves: bz#1732129 + * Thu Jul 11 2019 Jan Grulich - 5.12.4-4 - Pull in upstream fixes - Disable patch which is not needed anymore because of qtbase change diff --git a/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch b/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch new file mode 100644 index 0000000..d4463bf --- /dev/null +++ b/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch @@ -0,0 +1,39 @@ +diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp +index 97e0203c..5bee160a 100644 +--- a/src/client/qwaylandintegration.cpp ++++ b/src/client/qwaylandintegration.cpp +@@ -99,20 +99,26 @@ public: + + if (QGuiApplication::desktopSettingsAware()) { + const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment(); +- ++ QList gtkBasedEnvironments; ++ gtkBasedEnvironments << "GNOME" ++ << "X-CINNAMON" ++ << "UNITY" ++ << "MATE" ++ << "XFCE" ++ << "LXDE"; + if (desktopEnvironment == QByteArrayLiteral("KDE")) { + #if QT_CONFIG(settings) + result.push_back(QStringLiteral("kde")); + #endif +- } else if (!desktopEnvironment.isEmpty() && +- desktopEnvironment != QByteArrayLiteral("UNKNOWN") && +- desktopEnvironment != QByteArrayLiteral("GNOME") && +- desktopEnvironment != QByteArrayLiteral("UNITY") && +- desktopEnvironment != QByteArrayLiteral("MATE") && +- desktopEnvironment != QByteArrayLiteral("XFCE") && +- desktopEnvironment != QByteArrayLiteral("LXDE")) ++ } else if (gtkBasedEnvironments.contains(desktopEnvironment)) { ++ // prefer the GTK3 theme implementation with native dialogs etc. ++ result.push_back(QStringLiteral("gtk3")); ++ // fallback to the generic Gnome theme if loading the GTK3 theme fails ++ result.push_back(QLatin1String(QGnomeTheme::name)); ++ } else if (!desktopEnvironment.isEmpty() && desktopEnvironment != QByteArrayLiteral("UNKNOWN")) { + // Ignore X11 desktop environments + result.push_back(QString::fromLocal8Bit(desktopEnvironment.toLower())); ++ } + } + + if (result.isEmpty())