diff --git a/kcolorschememanager-dont-override-color-scheme-set-by-platform-theme.patch b/kcolorschememanager-dont-override-color-scheme-set-by-platform-theme.patch new file mode 100644 index 0000000..e27eba7 --- /dev/null +++ b/kcolorschememanager-dont-override-color-scheme-set-by-platform-theme.patch @@ -0,0 +1,46 @@ +From 2cd530626aeafd861c65b434af85d5153da618a2 Mon Sep 17 00:00:00 2001 +From: Jan Grulich +Date: Thu, 9 Mar 2023 11:19:28 +0100 +Subject: [PATCH] KColorSchemeManager: don't override color scheme set by + platform theme + +This allows to have Qt platform theme setting the color scheme before +it gets set and overriden by KColorSchemeManager. This is useful for 3rd +party platform themes like QGnomePlatform, allowing them to set a color +scheme that would complement QPalette. Since many KDE apps rely on using +KColorScheme, it can happen that they will use a color from KColorScheme +that doesn't correspond to QPalette set through the platform theme and +end up being broken. + +BUG: 447029 +--- + src/kcolorschememanager.cpp | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/src/kcolorschememanager.cpp b/src/kcolorschememanager.cpp +index 4c7e3be0..0c845555 100644 +--- a/src/kcolorschememanager.cpp ++++ b/src/kcolorschememanager.cpp +@@ -109,8 +109,17 @@ KColorSchemeManager::KColorSchemeManager(QObject *parent) + QString schemePath; + + if (scheme.isEmpty() || scheme == QLatin1String("Default")) { +- schemePath = d->automaticColorSchemePath(); +- d->m_defaultSchemeSelected = true; ++ // Color scheme might be already set from a platform theme ++ // This is used for example by QGnomePlatform that can set color scheme ++ // matching GNOME settings. This avoids issues where QGnomePlatform sets ++ // QPalette for dark theme, but end up mixing it also with Breeze light ++ // that is going to be used as a fallback for apps using KColorScheme. ++ // BUG: 447029 ++ schemePath = qApp->property("KDE_COLOR_SCHEME_PATH").toString(); ++ if (schemePath.isEmpty()) { ++ schemePath = d->automaticColorSchemePath(); ++ d->m_defaultSchemeSelected = true; ++ } + } else { + schemePath = indexForScheme(scheme).data(KColorSchemeModel::PathRole).toString(); + d->m_defaultSchemeSelected = false; +-- +GitLab + diff --git a/kconfigwidgets-properly-restore-default-palette.patch b/kconfigwidgets-properly-restore-default-palette.patch deleted file mode 100644 index e4272fe..0000000 --- a/kconfigwidgets-properly-restore-default-palette.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 1a8a574e0e1d379797b0745ce5ac0451a7104429 Mon Sep 17 00:00:00 2001 -From: Nicolas Fella -Date: Thu, 23 Dec 2021 12:33:10 +0100 -Subject: [PATCH] [kcolorschememanager] Properly restore default palette - -Currently when activating the default colorscheme we create a palette from the default KColorScheme - -However that is different from the application's default palette - -The former is effectively Breeze colors while the latter is fetched from the platformtheme - -By setting a default-constructed QPalette we tell Qt to load the default palette - -BUG: 447029 ---- - src/kcolorschememanager.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kcolorschememanager.cpp b/src/kcolorschememanager.cpp -index 4c7e3be..c05a839 100644 ---- a/src/kcolorschememanager.cpp -+++ b/src/kcolorschememanager.cpp -@@ -32,7 +32,11 @@ void KColorSchemeManagerPrivate::activateSchemeInternal(const QString &colorSche - // ApplicationPaletteChange event. - qApp->setProperty("KDE_COLOR_SCHEME_PATH", colorSchemePath); - if (colorSchemePath.isEmpty()) { -- qApp->setPalette(KColorScheme::createApplicationPalette(KSharedConfig::Ptr(nullptr))); -+ const QByteArray currentDesktop = qgetenv("XDG_CURRENT_DESKTOP"); -+ if (currentDesktop != QByteArray("KDE")) -+ qApp->setPalette(QPalette()); -+ else -+ qApp->setPalette(KColorScheme::createApplicationPalette(KSharedConfig::Ptr(nullptr))); - } else { - qApp->setPalette(KColorScheme::createApplicationPalette(KSharedConfig::openConfig(colorSchemePath))); - } - diff --git a/kf5-kconfigwidgets.spec b/kf5-kconfigwidgets.spec index 4cbd237..03abc63 100644 --- a/kf5-kconfigwidgets.spec +++ b/kf5-kconfigwidgets.spec @@ -2,7 +2,7 @@ Name: kf5-%{framework} Version: 5.104.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: KDE Frameworks 5 Tier 3 addon for creating configuration dialogs License: GPLv2+ and LGPLv2+ and MIT @@ -12,7 +12,10 @@ URL: https://invent.kde.org/frameworks/%{framework} %global stable %stable_kf5 Source0: http://download.kde.org/%{stable}/frameworks/%{majmin}/%{framework}-%{version}.tar.xz -Patch0: kconfigwidgets-properly-restore-default-palette.patch +%if 0%{?fedora} >= 38 +# Can be dropped with KF5 5.105 (already merged there) +Patch0: kcolorschememanager-dont-override-color-scheme-set-by-platform-theme.patch +%endif BuildRequires: extra-cmake-modules >= %{majmin} BuildRequires: kf5-kauth-devel >= %{majmin} @@ -86,6 +89,9 @@ developing applications that use %{name}. %changelog +* Mon Mar 20 2023 Jan Grulich - 5.104.0-2 +- KColorSchemeManager: don't override color scheme set by platform theme + * Sat Mar 04 2023 Marc Deop i Argemí - 5.104.0-1 - 5.104.0