parent
91c8ecf8bd
commit
80f840985c
@ -0,0 +1,60 @@
|
||||
From c2efa3e48e8de13e4fd5d35bd1a3ae961b8ec9c7 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
Date: Mon, 15 May 2023 13:11:58 +0200
|
||||
Subject: [PATCH] KIconTheme: allow to also fallback to Breeze-dark when set
|
||||
through QPA
|
||||
|
||||
KIconTheme always fallbacks to Breeze icon theme in order to make sure
|
||||
KDE apps are not missing icons on other desktops, like GNOME. Problem is
|
||||
that we always fallback to the light variant of Breeze, which will have
|
||||
icons that are barely visible when applications are using dark theme.
|
||||
This change checks fallback icon theme set through QPlatformTheme, like
|
||||
QGnomePlatform which can fallback to correct Breeze variant depending on
|
||||
the used system theme.
|
||||
---
|
||||
src/kicontheme.cpp | 17 ++++++++++++++++-
|
||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/kicontheme.cpp b/src/kicontheme.cpp
|
||||
index bf3e2b64..c05094b8 100644
|
||||
--- a/src/kicontheme.cpp
|
||||
+++ b/src/kicontheme.cpp
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <QResource>
|
||||
#include <QSet>
|
||||
|
||||
+#include <private/qguiapplication_p.h>
|
||||
+#include <qpa/qplatformtheme.h>
|
||||
+
|
||||
#include <qplatformdefs.h>
|
||||
|
||||
#include <array>
|
||||
@@ -60,13 +63,25 @@ void initRCCIconTheme()
|
||||
}
|
||||
Q_COREAPP_STARTUP_FUNCTION(initRCCIconTheme)
|
||||
|
||||
-// Set the icon theme fallback to breeze
|
||||
+// Set the icon theme fallback to breeze and/or to breeze-dark
|
||||
+// in case it has been set as system fallback icon theme.
|
||||
// Most of our apps use "lots" of icons that most of the times
|
||||
// are only available with breeze, we still honour the user icon
|
||||
// theme but if the icon is not found there, we go to breeze
|
||||
// since it's almost sure it'll be there
|
||||
static void setBreezeFallback()
|
||||
{
|
||||
+ if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
|
||||
+ const QVariant themeHint = theme->themeHint(QPlatformTheme::SystemIconFallbackThemeName);
|
||||
+ if (themeHint.isValid()) {
|
||||
+ const QString theme = themeHint.toString();
|
||||
+ if (theme.toLower().contains("breeze")) {
|
||||
+ QIcon::setFallbackThemeName(theme);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
QIcon::setFallbackThemeName(QStringLiteral("breeze"));
|
||||
}
|
||||
|
||||
--
|
||||
GitLab
|
Loading…
Reference in new issue