diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index b0d81fa5e..2510431c2 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -242,6 +242,9 @@ bool SessionController::uniqueChatsInSearchResults() const { } void SessionController::openFolder(not_null folder) { + if (_openedFolder.current() != folder) { + resetFakeUnreadWhileOpened(); + } setActiveChatsFilter(0); _openedFolder = folder.get(); } @@ -269,6 +272,12 @@ void SessionController::setActiveChatEntry(Dialogs::RowDescriptor row) { } } +void SessionController::resetFakeUnreadWhileOpened() { + if (const auto history = _activeChatEntry.current().key.history()) { + history->setFakeUnreadWhileOpened(false); + } +} + bool SessionController::chatEntryHistoryMove(int steps) { if (_chatEntryHistory.empty()) { return false; @@ -781,6 +790,9 @@ FilterId SessionController::activeChatsFilterCurrent() const { } void SessionController::setActiveChatsFilter(FilterId id) { + if (activeChatsFilterCurrent() != id) { + resetFakeUnreadWhileOpened(); + } _activeChatsFilter.force_assign(id); if (id) { closeFolder(); diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index ef187d9cc..57aa189cb 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -328,6 +328,7 @@ private: void pushToChatEntryHistory(Dialogs::RowDescriptor row); bool chatEntryHistoryMove(int steps); + void resetFakeUnreadWhileOpened(); const not_null _window;