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