From 50caa231f7417675787d7ed823887cded8ba034f Mon Sep 17 00:00:00 2001 From: tehcneko Date: Wed, 13 Mar 2024 15:24:08 +0800 Subject: [PATCH] Fix invisible tray icon on Plasma 6 in Linux PR #20529. Closes #20367. --------- Co-authored-by: thalieht Co-authored-by: Vladimir Golovnev --- src/gui/desktopintegration.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/gui/desktopintegration.cpp b/src/gui/desktopintegration.cpp index 86c9a961b..2416f8134 100644 --- a/src/gui/desktopintegration.cpp +++ b/src/gui/desktopintegration.cpp @@ -31,6 +31,7 @@ #include +#include #include #include @@ -283,17 +284,25 @@ void DesktopIntegration::createTrayIcon() QIcon DesktopIntegration::getSystrayIcon() const { const TrayIcon::Style style = Preferences::instance()->trayIconStyle(); + QIcon icon; switch (style) { default: case TrayIcon::Style::Normal: - return UIThemeManager::instance()->getIcon(u"qbittorrent-tray"_s); - + icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray"_s); + break; case TrayIcon::Style::MonoDark: - return UIThemeManager::instance()->getIcon(u"qbittorrent-tray-dark"_s); - + icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray-dark"_s); + break; case TrayIcon::Style::MonoLight: - return UIThemeManager::instance()->getIcon(u"qbittorrent-tray-light"_s); + icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray-light"_s); + break; } +#ifdef Q_OS_UNIX + // Workaround for invisible tray icon in KDE, https://bugreports.qt.io/browse/QTBUG-53550 + if (qEnvironmentVariable("XDG_CURRENT_DESKTOP").compare(u"KDE", Qt::CaseInsensitive) == 0) + return icon.pixmap(32); +#endif + return icon; } #endif // Q_OS_MACOS