From 13eeddf4797bf44d6ac03e4fbd5a9019290ce9e5 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Fri, 16 Dec 2022 13:53:19 +0400 Subject: [PATCH] Don't wait for input when there are fullscreen applications --- .../platform/linux/notifications_manager_linux.cpp | 4 ++++ .../platform/linux/notifications_manager_linux_dummy.cpp | 4 ++++ .../SourceFiles/platform/mac/notifications_manager_mac.mm | 4 ++++ .../SourceFiles/platform/platform_notifications_manager.h | 1 + .../SourceFiles/platform/win/notifications_manager_win.cpp | 6 ++++++ .../SourceFiles/window/notifications_manager_default.cpp | 4 +++- 6 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp b/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp index c8681746be..92fe1df738 100644 --- a/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp @@ -798,6 +798,10 @@ bool SkipFlashBounceForCustom() { return false; } +bool WaitForInputForCustom() { + return true; +} + bool Supported() { return ServiceRegistered || Gio::Application::get_default(); } diff --git a/Telegram/SourceFiles/platform/linux/notifications_manager_linux_dummy.cpp b/Telegram/SourceFiles/platform/linux/notifications_manager_linux_dummy.cpp index 0135a66b55..1209cdb6ee 100644 --- a/Telegram/SourceFiles/platform/linux/notifications_manager_linux_dummy.cpp +++ b/Telegram/SourceFiles/platform/linux/notifications_manager_linux_dummy.cpp @@ -25,6 +25,10 @@ bool SkipFlashBounceForCustom() { return false; } +bool WaitForInputForCustom() { + return true; +} + bool Supported() { return false; } diff --git a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm index 5905a8c726..761ba6fe38 100644 --- a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm +++ b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm @@ -163,6 +163,10 @@ bool SkipFlashBounceForCustom() { return false; } +bool WaitForInputForCustom() { + return true; +} + bool Supported() { return true; } diff --git a/Telegram/SourceFiles/platform/platform_notifications_manager.h b/Telegram/SourceFiles/platform/platform_notifications_manager.h index 8ab4826719..0dd577d976 100644 --- a/Telegram/SourceFiles/platform/platform_notifications_manager.h +++ b/Telegram/SourceFiles/platform/platform_notifications_manager.h @@ -15,6 +15,7 @@ namespace Notifications { [[nodiscard]] bool SkipAudioForCustom(); [[nodiscard]] bool SkipToastForCustom(); [[nodiscard]] bool SkipFlashBounceForCustom(); +[[nodiscard]] bool WaitForInputForCustom(); [[nodiscard]] bool Supported(); [[nodiscard]] bool Enforced(); diff --git a/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp b/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp index cd4da28629..53106d661b 100644 --- a/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp +++ b/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp @@ -369,6 +369,12 @@ bool SkipFlashBounceForCustom() { return SkipToastForCustom(); } +bool WaitForInputForCustom() { + QuerySystemNotificationSettings(); + + return UserNotificationState != QUNS_BUSY; +} + bool Supported() { #ifndef __MINGW32__ if (!Checked) { diff --git a/Telegram/SourceFiles/window/notifications_manager_default.cpp b/Telegram/SourceFiles/window/notifications_manager_default.cpp index 3f78b9b7a5..7d3032a5b6 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.cpp +++ b/Telegram/SourceFiles/window/notifications_manager_default.cpp @@ -729,7 +729,9 @@ bool Notification::checkLastInput( std::optional lastInputTime) { if (!_waitingForInput) return true; - const auto waitForUserInput = lastInputTime.has_value() + using namespace Platform::Notifications; + const auto waitForUserInput = WaitForInputForCustom() + && lastInputTime.has_value() && (*lastInputTime <= _started); if (!waitForUserInput) {