From ea5b220601473213689ef9bad6611ec74b776aa5 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Thu, 14 Jun 2018 00:03:23 +0200 Subject: [PATCH] qtui: Properly update tray icons Refresh tray icons in case the icon theme is changed, or when switching between normal and inverted tray icons. --- src/qtui/legacysystemtray.cpp | 1 + src/qtui/statusnotifieritem.cpp | 3 ++- src/qtui/systemtray.cpp | 4 +++- src/qtui/systemtray.h | 6 +++--- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/qtui/legacysystemtray.cpp b/src/qtui/legacysystemtray.cpp index 8e7d2b72..7513bc81 100644 --- a/src/qtui/legacysystemtray.cpp +++ b/src/qtui/legacysystemtray.cpp @@ -55,6 +55,7 @@ LegacySystemTray::LegacySystemTray(QWidget *parent) connect(this, SIGNAL(modeChanged(Mode)), this, SLOT(onModeChanged(Mode))); connect(this, SIGNAL(stateChanged(State)), this, SLOT(onStateChanged(State))); connect(this, SIGNAL(toolTipChanged(QString, QString)), SLOT(updateToolTip())); + connect(this, SIGNAL(iconsChanged()), this, SLOT(updateIcon())); _blinkTimer.setInterval(750); _blinkTimer.setSingleShot(false); diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index f3b462bc..9f34e7c9 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -100,7 +100,7 @@ StatusNotifierItem::StatusNotifierItem(QWidget *parent) } #endif - connect(QtUi::instance(), SIGNAL(iconThemeRefreshed()), this, SLOT(refreshIcons())); + connect(this, SIGNAL(iconsChanged()), this, SLOT(refreshIcons())); refreshIcons(); // Our own SNI service @@ -188,6 +188,7 @@ void StatusNotifierItem::onDBusError(const QDBusError &error) setMode(Mode::Legacy); } + void StatusNotifierItem::refreshIcons() { #if QT_VERSION >= 0x050000 diff --git a/src/qtui/systemtray.cpp b/src/qtui/systemtray.cpp index 4a68dd64..9d2078be 100644 --- a/src/qtui/systemtray.cpp +++ b/src/qtui/systemtray.cpp @@ -66,8 +66,9 @@ SystemTray::SystemTray(QWidget *parent) _trayMenu->addSeparator(); _trayMenu->addAction(_minimizeRestoreAction); _trayMenu->addAction(coll->action("Quit")); - connect(_trayMenu, SIGNAL(aboutToShow()), SLOT(trayMenuAboutToShow())); + + connect(QtUi::instance(), SIGNAL(iconThemeRefreshed()), this, SIGNAL(iconsChanged())); } @@ -213,6 +214,7 @@ void SystemTray::enableAnimationChanged(const QVariant &v) void SystemTray::invertTrayIconChanged(const QVariant &v) { _trayIconInverted = v.toBool(); + emit iconsChanged(); } diff --git a/src/qtui/systemtray.h b/src/qtui/systemtray.h index d07edf10..733a6f09 100644 --- a/src/qtui/systemtray.h +++ b/src/qtui/systemtray.h @@ -86,11 +86,11 @@ signals: void modeChanged(Mode mode); void stateChanged(State state); void visibilityChanged(bool isVisible); - - void activated(SystemTray::ActivationReason); - void iconChanged(const QIcon &icon); + void iconsChanged(); void animationEnabledChanged(bool); void toolTipChanged(const QString &title, const QString &subtitle); + + void activated(SystemTray::ActivationReason); void messageClicked(uint notificationId); void messageClosed(uint notificationId); -- 2.20.1