From fa2da5e169180c2ee64dc80909dc2c64979bcba5 Mon Sep 17 00:00:00 2001 From: Hartmnt <hartmunt@protonmail.com> Date: Tue, 7 Jan 2025 23:24:08 +0000 Subject: [PATCH] FIX --- src/mumble/widgets/TrayIcon.cpp | 18 +++++++----------- src/mumble/widgets/TrayIcon.h | 3 +-- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/mumble/widgets/TrayIcon.cpp b/src/mumble/widgets/TrayIcon.cpp index fe49ce9f9c..5faf109121 100644 --- a/src/mumble/widgets/TrayIcon.cpp +++ b/src/mumble/widgets/TrayIcon.cpp @@ -13,7 +13,7 @@ #include <QApplication> TrayIcon::TrayIcon() : QSystemTrayIcon(Global::get().mw), m_statusIcon(Global::get().mw->qiIcon) { - applyIcon(m_statusIcon); + setIcon(m_statusIcon); setToolTip("Mumble"); @@ -96,7 +96,7 @@ void TrayIcon::on_icon_update() { if (&newIcon.get() != &m_statusIcon.get()) { m_statusIcon = newIcon; - applyIcon(m_statusIcon); + setIcon(m_statusIcon); } } @@ -137,11 +137,6 @@ void TrayIcon::updateContextMenu() { m_contextMenu->addAction(Global::get().mw->qaQuit); } -void TrayIcon::applyIcon(QIcon &icon) { - setIcon(icon); - m_currentIcon = &icon; -} - void TrayIcon::on_toggleShowHide() { if (Global::get().mw->isVisible() && !Global::get().mw->isMinimized()) { on_hideAction_triggered(); @@ -195,7 +190,7 @@ void TrayIcon::on_tray_unhighlight() { } m_highlightTimer->stop(); - applyIcon(m_statusIcon); + setIcon(m_statusIcon); } void TrayIcon::on_timer_triggered() { @@ -208,11 +203,12 @@ void TrayIcon::on_timer_triggered() { // by blinking the application in the task bar - is invisible // if the application is hidden to tray. - if (m_currentIcon == &m_statusIcon.get()) { - applyIcon(Global::get().mw->m_iconInformation); + if (!m_blinkingIcon) { + setIcon(Global::get().mw->m_iconInformation); m_highlightTimer->start(500); } else { - applyIcon(m_statusIcon); + setIcon(m_statusIcon); m_highlightTimer->start(2000); } + m_blinkingIcon = !m_blinkingIcon; } diff --git a/src/mumble/widgets/TrayIcon.h b/src/mumble/widgets/TrayIcon.h index 1817eb7407..9bc22a9b6e 100644 --- a/src/mumble/widgets/TrayIcon.h +++ b/src/mumble/widgets/TrayIcon.h @@ -29,14 +29,13 @@ public slots: private: std::reference_wrapper< QIcon > m_statusIcon; - QIcon *m_currentIcon = nullptr; + bool *m_blinkingIcon = false; QMenu *m_contextMenu = nullptr; QAction *m_showAction = nullptr; QAction *m_hideAction = nullptr; QTimer *m_highlightTimer = nullptr; void updateContextMenu(); - void applyIcon(QIcon &icon); private slots: void on_icon_clicked(QSystemTrayIcon::ActivationReason reason);