diff --git a/0016-Fix-memory-leak-in-QGtk3Interface-themename.patch b/0016-Fix-memory-leak-in-QGtk3Interface-themename.patch new file mode 100644 index 0000000..d656e8b --- /dev/null +++ b/0016-Fix-memory-leak-in-QGtk3Interface-themename.patch @@ -0,0 +1,52 @@ +From 233e7e6be35a5a455b6ecd7c15de8c9cfc70ca10 Mon Sep 17 00:00:00 2001 +From: Thorbjørn Lindeijer +Date: Thu, 3 Aug 2023 16:09:49 +0200 +Subject: Fix memory leak in QGtk3Interface::themeName + +Pick-to: 6.6 6.5 +Change-Id: Ib8c90f7ef66c095f0c1fc04f4cc72bf5eea72ddb +Reviewed-by: Axel Spoerl + +diff --git a/src/plugins/platformthemes/gtk3/qgtk3interface.cpp b/src/plugins/platformthemes/gtk3/qgtk3interface.cpp +index 21abea81..8e8fefb6 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3interface.cpp ++++ b/src/plugins/platformthemes/gtk3/qgtk3interface.cpp +@@ -477,15 +477,18 @@ QBrush QGtk3Interface::brush(QGtkWidget wtype, QGtkColorSource source, GtkStateF + \internal + \brief Returns the name of the current GTK theme. + */ +-const QString QGtk3Interface::themeName() const ++QString QGtk3Interface::themeName() const + { +- gchar *theme_name; +- GtkSettings *settings = gtk_settings_get_default(); +- if (!settings) +- return QString(); ++ QString name; ++ ++ if (GtkSettings *settings = gtk_settings_get_default()) { ++ gchar *theme_name; ++ g_object_get(settings, "gtk-theme-name", &theme_name, nullptr); ++ name = QLatin1String(theme_name); ++ g_free(theme_name); ++ } + +- g_object_get(settings, "gtk-theme-name", &theme_name, nullptr); +- return QLatin1String(theme_name); ++ return name; + } + + /*! +diff --git a/src/plugins/platformthemes/gtk3/qgtk3interface_p.h b/src/plugins/platformthemes/gtk3/qgtk3interface_p.h +index 42643e72..d9bf5c32 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3interface_p.h ++++ b/src/plugins/platformthemes/gtk3/qgtk3interface_p.h +@@ -132,7 +132,7 @@ public: + QIcon fileIcon(const QFileInfo &fileInfo) const; + + // Return current GTK theme name +- const QString themeName() const; ++ QString themeName() const; + + // Derive appearance from default colors + Qt::Appearance appearanceByColors() const; diff --git a/0017-Fix-disabled-button-color-in-Linux-x11-wayland.patch b/0017-Fix-disabled-button-color-in-Linux-x11-wayland.patch new file mode 100644 index 0000000..38311f0 --- /dev/null +++ b/0017-Fix-disabled-button-color-in-Linux-x11-wayland.patch @@ -0,0 +1,40 @@ +From 4cffb3b5fbbad24fed26690c3e10c0332cb0b33f Mon Sep 17 00:00:00 2001 +From: Santhosh Kumar +Date: Mon, 9 Oct 2023 13:17:19 +0200 +Subject: Fix disabled button color in Linux (X11/Wayland) + +The palette mapping table (as read from gtk widget) maintained in +QGtk3Storage misses information of QPalette::Button and +QPalette::ButtonText role for QPalette::Disabled color group. This +cause disabled button widget to be rendered with incorrect palette +(such as in dark color scheme, light palette had been used). + +This patch fixes this issue by extending palette mapping in +QGtk3Storage for disabled color group of button role. + +Fixes: QTBUG-113486 +Pick-to: 6.6.0 6.6 6.5 +Change-Id: Ied4b2650c92cc1cda58be69257945991013b276f +Reviewed-by: Axel Spoerl + +diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +index 1952ce278c..0017f55a45 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp ++++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +@@ -531,6 +531,8 @@ void QGtk3Storage::createMapping() + ADD(Normal, Base); + ADD(Inactive, Base); + ADD(Inactive, Window); ++ ADD(Disabled, Button); ++ ADD(Disabled, Window); + LIGHTER(Normal, Window, 125); + ADD(Normal, Light); + LIGHTER(Normal, Window, 70); +@@ -543,6 +545,7 @@ void QGtk3Storage::createMapping() + ADD(Disabled, Text); + ADD(Disabled, WindowText); + ADD(Inactive, ButtonText); ++ ADD(Disabled, ButtonText); + GTK(button, Text, NORMAL); + ADD(Disabled, ButtonText); + // special background colors diff --git a/0018-Fix-inactive-palette-in-gtk3-theme.patch b/0018-Fix-inactive-palette-in-gtk3-theme.patch new file mode 100644 index 0000000..47635d4 --- /dev/null +++ b/0018-Fix-inactive-palette-in-gtk3-theme.patch @@ -0,0 +1,241 @@ +From a608a7c29886fd95ea8569776036673e6c7639f2 Mon Sep 17 00:00:00 2001 +From: Santhosh Kumar +Date: Tue, 10 Oct 2023 16:07:07 +0200 +Subject: Fix inactive palette in gtk3 theme + +In gtk3 theme, the inactive color group had been set with incorrect +palette or not been set for some cases, which leads to glitch when +moving application window. This is because inactive group palettes were +applied during window movement and its expected to be set with correct +palettes. + +This patch fixes this issue by setting correct palette for inactive +color group. + +Fixes: QTBUG-112879 +Pick-to: 6.6 6.5 +Change-Id: I6658843626f322fee0ef99dfafb550956e3e0aee +Reviewed-by: Jonas Karlsson +Reviewed-by: Axel Spoerl + +diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +index 0017f55a45..bbc70c39a2 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp ++++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +@@ -524,93 +524,129 @@ void QGtk3Storage::createMapping() + + + // System palette +- // background color and calculate derivates +- GTK(Default, Background, INSENSITIVE); +- ADD(Normal, Window); +- ADD(Normal, Button); +- ADD(Normal, Base); +- ADD(Inactive, Base); +- ADD(Inactive, Window); +- ADD(Disabled, Button); +- ADD(Disabled, Window); +- LIGHTER(Normal, Window, 125); +- ADD(Normal, Light); +- LIGHTER(Normal, Window, 70); +- ADD(Normal, Shadow); +- LIGHTER(Normal, Window, 80); +- ADD(Normal, Dark); +- GTK(button, Foreground, ACTIVE); +- ADD(Inactive, WindowText); +- LIGHTER(Normal, WindowText, 50); +- ADD(Disabled, Text); +- ADD(Disabled, WindowText); +- ADD(Inactive, ButtonText); +- ADD(Disabled, ButtonText); +- GTK(button, Text, NORMAL); +- ADD(Disabled, ButtonText); +- // special background colors +- GTK(Default, Background, SELECTED); +- ADD(Disabled, Highlight); +- ADD(Normal, Highlight); +- GTK(entry, Foreground, SELECTED); +- ADD(Normal, HighlightedText); +- GTK(entry, Background, ACTIVE); +- ADD(Inactive, HighlightedText); +- // text color and friends +- GTK(entry, Text, NORMAL); +- ADD(Normal, ButtonText); +- ADD(Normal, WindowText); +- ADD(Disabled, WindowText); +- ADD(Disabled, HighlightedText); +- GTK(Default, Text, NORMAL); +- ADD(Normal, Text); +- ADD(Normal, WindowText); +- ADD(Inactive, Text); +- ADD(Normal, HighlightedText); +- LIGHTER(Normal, Base, 93); +- ADD(All, AlternateBase); +- GTK(Default, Foreground, NORMAL); +- ADD(All, ToolTipText); +- MODIFY(Normal, Text, 100, 100, 100); +- ADD(All, PlaceholderText, Light); +- MODIFY(Normal, Text, -100, -100, -100); +- ADD(All, PlaceholderText, Dark); +- SAVE(SystemPalette); +- CLEAR; +- +- // Checkbox and Radio Button +- GTK(button, Text, ACTIVE); +- ADD(Normal, Base, Dark); +- GTK(Default, Background, NORMAL); +- ADD(All, Base); +- GTK(button, Text, NORMAL); +- ADD(Normal, Base, Light); +- SAVE(CheckBoxPalette); +- SAVE(RadioButtonPalette); +- CLEAR; +- +- // ComboBox, GroupBox, Frame +- GTK(combo_box, Text, NORMAL); +- ADD(Normal, ButtonText, Dark); +- ADD(Normal, Text, Dark); +- GTK(combo_box, Text, ACTIVE); +- ADD(Normal, ButtonText, Light); +- ADD(Normal, Text, Light); +- SAVE(ComboBoxPalette); +- SAVE(GroupBoxPalette); +- CLEAR; +- +- // Menu bar +- GTK(Default, Text, ACTIVE); +- ADD(Normal, ButtonText); +- SAVE(MenuPalette); +- CLEAR; +- +- // LineEdit +- GTK(Default, Background, NORMAL); +- ADD(All, Base); +- SAVE(TextLineEditPalette); +- CLEAR; ++ { ++ // background color and calculate derivates ++ GTK(Default, Background, INSENSITIVE); ++ ADD(All, Window); ++ ADD(All, Button); ++ ADD(All, Base); ++ LIGHTER(Normal, Window, 125); ++ ADD(Normal, Light); ++ ADD(Inactive, Light); ++ LIGHTER(Normal, Window, 70); ++ ADD(Normal, Shadow); ++ LIGHTER(Normal, Window, 80); ++ ADD(Normal, Dark); ++ ADD(Inactive, Dark) ++ ++ GTK(button, Foreground, ACTIVE); ++ ADD(Inactive, WindowText); ++ LIGHTER(Normal, WindowText, 50); ++ ADD(Disabled, Text); ++ ADD(Disabled, WindowText); ++ ADD(Disabled, ButtonText); ++ ++ GTK(button, Text, NORMAL); ++ ADD(Inactive, ButtonText); ++ ++ // special background colors ++ GTK(Default, Background, SELECTED); ++ ADD(Disabled, Highlight); ++ ADD(Normal, Highlight); ++ ADD(Inactive, Highlight); ++ ++ GTK(entry, Foreground, SELECTED); ++ ADD(Normal, HighlightedText); ++ ADD(Inactive, HighlightedText); ++ ++ // text color and friends ++ GTK(entry, Text, NORMAL); ++ ADD(Normal, ButtonText); ++ ADD(Normal, WindowText); ++ ADD(Disabled, HighlightedText); ++ ++ GTK(Default, Text, NORMAL); ++ ADD(Normal, Text); ++ ADD(Inactive, Text); ++ ADD(Normal, HighlightedText); ++ LIGHTER(Normal, Base, 93); ++ ADD(All, AlternateBase); ++ ++ GTK(Default, Foreground, NORMAL); ++ ADD(All, ToolTipText); ++ MODIFY(Normal, Text, 100, 100, 100); ++ ADD(All, PlaceholderText, Light); ++ MODIFY(Normal, Text, -100, -100, -100); ++ ADD(All, PlaceholderText, Dark); ++ ++ SAVE(SystemPalette); ++ CLEAR; ++ } ++ ++ // Label and TabBar Palette ++ { ++ GTK(entry, Text, NORMAL); ++ ADD(Normal, WindowText); ++ ADD(Inactive, WindowText); ++ ++ SAVE(LabelPalette); ++ SAVE(TabBarPalette); ++ CLEAR; ++ } ++ ++ // Checkbox and RadioButton Palette ++ { ++ GTK(button, Text, ACTIVE); ++ ADD(Normal, Base, Dark); ++ ADD(Inactive, WindowText, Dark); ++ ++ GTK(Default, Foreground, NORMAL); ++ ADD(All, Text); ++ ++ GTK(Default, Background, NORMAL); ++ ADD(All, Base); ++ ++ GTK(button, Text, NORMAL); ++ ADD(Normal, Base, Light); ++ ADD(Inactive, WindowText, Light); ++ ++ SAVE(CheckBoxPalette); ++ SAVE(RadioButtonPalette); ++ CLEAR; ++ } ++ ++ // ComboBox, GroupBox & Frame Palette ++ { ++ GTK(combo_box, Text, NORMAL); ++ ADD(Normal, ButtonText, Dark); ++ ADD(Normal, Text, Dark); ++ ADD(Inactive, WindowText, Dark); ++ ++ GTK(combo_box, Text, ACTIVE); ++ ADD(Normal, ButtonText, Light); ++ ADD(Normal, Text, Light); ++ ADD(Inactive, WindowText, Light); ++ ++ SAVE(ComboBoxPalette); ++ SAVE(GroupBoxPalette); ++ CLEAR; ++ } ++ ++ // MenuBar Palette ++ { ++ GTK(Default, Text, ACTIVE); ++ ADD(Normal, ButtonText); ++ SAVE(MenuPalette); ++ CLEAR; ++ } ++ ++ // LineEdit Palette ++ { ++ GTK(Default, Background, NORMAL); ++ ADD(All, Base); ++ SAVE(TextLineEditPalette); ++ CLEAR; ++ } + + #undef GTK + #undef REC diff --git a/0019-Fix-tooltip-palette-issue-in-gtk3-theme.patch b/0019-Fix-tooltip-palette-issue-in-gtk3-theme.patch new file mode 100644 index 0000000..890bdc0 --- /dev/null +++ b/0019-Fix-tooltip-palette-issue-in-gtk3-theme.patch @@ -0,0 +1,27 @@ +From 756857b5d05fe85ea93851111fafc430944dbe61 Mon Sep 17 00:00:00 2001 +From: Santhosh Kumar +Date: Wed, 18 Oct 2023 11:23:20 +0200 +Subject: Fix tooltip palette issue in gtk3 theme + +The tooltip text doesn't show with right palette when application runs +in dark mode using gtk3 theme. + +This patchset removes explicitly setting ToolTipText palette in +gtk3theme. + +Pick-to: 6.6 6.5 +Change-Id: Id90626a377733814c3f32f0bf7e5539097b76dd6 +Reviewed-by: Axel Spoerl + +diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +index bbc70c39a2..22cfabb843 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp ++++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +@@ -573,7 +573,6 @@ void QGtk3Storage::createMapping() + ADD(All, AlternateBase); + + GTK(Default, Foreground, NORMAL); +- ADD(All, ToolTipText); + MODIFY(Normal, Text, 100, 100, 100); + ADD(All, PlaceholderText, Light); + MODIFY(Normal, Text, -100, -100, -100); diff --git a/0020-QGtk3Theme-define-light-midlight-mid-dark-shadow-colors.patch b/0020-QGtk3Theme-define-light-midlight-mid-dark-shadow-colors.patch new file mode 100644 index 0000000..384603f --- /dev/null +++ b/0020-QGtk3Theme-define-light-midlight-mid-dark-shadow-colors.patch @@ -0,0 +1,40 @@ +From fd09519bbd4e7ea89b898c7496e7e06980ee9672 Mon Sep 17 00:00:00 2001 +From: Axel Spoerl +Date: Thu, 19 Oct 2023 15:19:12 +0200 +Subject: QGtk3Theme: define light, midlight, mid, dark and shadow colors +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Define color groups used for shading and in order to render specific +inactive texts, e.g. menu item text. + +Found-by: Piotr Wierciński +Pick-to: 6.6 6.5 +Change-Id: I736f5aff1ff5379ce3f78b53e547b0b5f552779f +Reviewed-by: Santhosh Kumar +Reviewed-by: Piotr Wierciński + +diff --git a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +index 22cfabb843..90c0282651 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3storage.cpp ++++ b/src/plugins/platformthemes/gtk3/qgtk3storage.cpp +@@ -578,6 +578,18 @@ void QGtk3Storage::createMapping() + MODIFY(Normal, Text, -100, -100, -100); + ADD(All, PlaceholderText, Dark); + ++ // Light, midlight, dark, mid, shadow colors ++ LIGHTER(Normal, Button, 125); ++ ADD(All, Light) ++ LIGHTER(Normal, Button, 113); ++ ADD(All, Midlight) ++ LIGHTER(Normal, Button, 113); ++ ADD(All, Mid) ++ LIGHTER(Normal, Button, 87); ++ ADD(All, Dark) ++ LIGHTER(Normal, Button, 5); ++ ADD(All, Shadow) ++ + SAVE(SystemPalette); + CLEAR; + } diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec index 76592d4..871dad1 100644 --- a/qt5-qtbase.spec +++ b/qt5-qtbase.spec @@ -57,7 +57,7 @@ Name: qt5-qtbase Summary: Qt5 - QtBase components Version: 5.15.11 -Release: 5%{?dist} +Release: 6%{?dist} # See LGPL_EXCEPTIONS.txt, for exception details License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0 @@ -186,6 +186,11 @@ Patch161: 0012-Document-QGtk3Interface.patch Patch162: 0013-Document-QGtk3Storage.patch Patch163: 0014-QGtk3Theme-Improve-fixed-font-delivery.patch Patch164: 0015-QGtk3Theme-Do-not-default-Active-WindowText-to-butto.patch +Patch165: 0016-Fix-memory-leak-in-QGtk3Interface-themename.patch +Patch166: 0017-Fix-disabled-button-color-in-Linux-x11-wayland.patch +Patch167: 0018-Fix-inactive-palette-in-gtk3-theme.patch +Patch168: 0019-Fix-tooltip-palette-issue-in-gtk3-theme.patch +Patch169: 0020-QGtk3Theme-define-light-midlight-mid-dark-shadow-colors.patch # Latest QGnomePlatform needs to be specified to be used Patch200: qtbase-use-qgnomeplatform-as-default-platform-theme-on-gnome.patch @@ -491,6 +496,11 @@ Qt5 libraries used for drawing widgets and OpenGL items. %patch -P162 -p1 %patch -P163 -p1 %patch -P164 -p1 +%patch -P165 -p1 +%patch -P166 -p1 +%patch -P167 -p1 +%patch -P168 -p1 +%patch -P169 -p1 %endif %if 0%{?fedora} < 39 @@ -1176,6 +1186,9 @@ fi %changelog +* Tue Nov 14 2023 Jan Grulich - 5.15.11-6 +- Backport another upstream (Qt6) fixes and improvements to QGtk3Theme + * Thu Nov 09 2023 Jan Grulich - 5.15.11-5 - Revert: Fix Qt not showing up emoji by handling emoji font family