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);