diff --git a/src/core/Frontend.hpp b/src/core/Frontend.hpp index 4721e0d1..fb662066 100644 --- a/src/core/Frontend.hpp +++ b/src/core/Frontend.hpp @@ -90,6 +90,7 @@ class Frontend // Queries virtual bool IsWindowMinimized() = 0; + virtual bool IsWindowFocused() = 0; // Strings virtual std::string GetDirectMessagesText() = 0; diff --git a/src/core/state/NotificationManager.cpp b/src/core/state/NotificationManager.cpp index 0459f79a..63d806d3 100644 --- a/src/core/state/NotificationManager.cpp +++ b/src/core/state/NotificationManager.cpp @@ -66,8 +66,8 @@ bool NotificationManager::IsNotificationWorthy(Snowflake guildID, Snowflake chan } } - // If we are focused on this very channel and the window is not minimized, return - if (channelID == m_pDiscord->GetCurrentChannelID() && !GetFrontend()->IsWindowMinimized()) + // If we are focused on this very channel and the window is in focus, return + if (channelID == m_pDiscord->GetCurrentChannelID() && GetFrontend()->IsWindowFocused()) return false; auto pSettings = m_pDiscord->m_userGuildSettings.GetSettings(guildID); diff --git a/src/windows/Frontend_Win32.cpp b/src/windows/Frontend_Win32.cpp index 016e6bed..70861347 100644 --- a/src/windows/Frontend_Win32.cpp +++ b/src/windows/Frontend_Win32.cpp @@ -417,6 +417,11 @@ bool Frontend_Win32::IsWindowMinimized() return IsIconic(g_Hwnd); } +bool Frontend_Win32::IsWindowFocused() +{ + return GetForegroundWindow() == g_Hwnd; +} + #ifdef USE_DEBUG_PRINTS void DbgPrintWV(const char* fmt, va_list vl) diff --git a/src/windows/Frontend_Win32.hpp b/src/windows/Frontend_Win32.hpp index fc007066..5b1212fc 100644 --- a/src/windows/Frontend_Win32.hpp +++ b/src/windows/Frontend_Win32.hpp @@ -63,6 +63,7 @@ class Frontend_Win32 : public Frontend void RestoreWindow() override; void MaximizeWindow() override; bool IsWindowMinimized() override; + bool IsWindowFocused() override; std::string GetDirectMessagesText() override; std::string GetPleaseWaitText() override; std::string GetMonthName(int index) override;