From 7f6221b4094865700a45973fc827abf9ffeaa7fd Mon Sep 17 00:00:00 2001 From: Nikolai Nechaev <nikolay_nechaev@mail.ru> Date: Thu, 2 Jan 2025 17:49:58 +0300 Subject: [PATCH] `Manager::startAllHiding`: don't treat fading in notifications specially Previously, `Window::Notifications::Default::Manager` would not start hiding notifications that are fading in when other notifications should hide. This would lead to some notifications never hiding, e.g., when the cursor passes through the notification too quickly and there was not enough time for the notification to fade in completely. Also renamed `Widget::isShowing` -> `Widget::isFadingIn` for clarity. Fixes #28811. --- .../window/notifications_manager_default.cpp | 10 ++-------- .../SourceFiles/window/notifications_manager_default.h | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/window/notifications_manager_default.cpp b/Telegram/SourceFiles/window/notifications_manager_default.cpp index 8ff3e2323..5bf6f6099 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.cpp +++ b/Telegram/SourceFiles/window/notifications_manager_default.cpp @@ -188,16 +188,10 @@ void Manager::checkLastInput() { void Manager::startAllHiding() { if (!hasReplyingNotification()) { - int notHidingCount = 0; for (const auto ¬ification : _notifications) { - if (notification->isShowing()) { - ++notHidingCount; - } else { - notification->startHiding(); - } + notification->startHiding(); } - notHidingCount += _queuedNotifications.size(); - if (_hideAll && notHidingCount < 2) { + if (_hideAll && _queuedNotifications.size() < 2) { _hideAll->startHiding(); } } diff --git a/Telegram/SourceFiles/window/notifications_manager_default.h b/Telegram/SourceFiles/window/notifications_manager_default.h index 5bd4344d8..7c8128235 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.h +++ b/Telegram/SourceFiles/window/notifications_manager_default.h @@ -143,7 +143,7 @@ public: int shift, Direction shiftDirection); - bool isShowing() const { + bool isFadingIn() const { return _a_opacity.animating() && !_hiding; }