diff --git a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.cpp b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.cpp index 0bf4704b3..2e51210ee 100644 --- a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.cpp +++ b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.cpp @@ -70,19 +70,19 @@ void ChatsFiltersTabs::fitWidthToSections() { } } -void ChatsFiltersTabs::setUnreadCount(int index, int unreadCount) { +void ChatsFiltersTabs::setUnreadCount(int index, int unreadCount, bool mute) { const auto it = _unreadCounts.find(index); if (it == _unreadCounts.end()) { if (unreadCount) { _unreadCounts.emplace(index, Unread{ - .cache = cacheUnreadCount(unreadCount), + .cache = cacheUnreadCount(unreadCount, mute), .count = unreadCount, }); } } else { if (unreadCount) { it->second.count = unreadCount; - it->second.cache = cacheUnreadCount(unreadCount); + it->second.cache = cacheUnreadCount(unreadCount, mute); } else { _unreadCounts.erase(it); } @@ -132,7 +132,7 @@ void ChatsFiltersTabs::setLockedFrom(int index) { }); } -QImage ChatsFiltersTabs::cacheUnreadCount(int count) const { +QImage ChatsFiltersTabs::cacheUnreadCount(int count, bool muted) const { const auto widthIndex = (count < 10) ? 0 : (count < 100) ? 1 : 2; auto image = QImage( QSize(_cachedBadgeWidths[widthIndex], _cachedBadgeHeight) @@ -145,7 +145,13 @@ QImage ChatsFiltersTabs::cacheUnreadCount(int count) const { : QString::number(count); { auto p = QPainter(&image); - Ui::PaintUnreadBadge(p, string, 0, 0, _unreadSt, 0); + if (muted) { + auto copy = _unreadSt; + copy.muted = muted; + Ui::PaintUnreadBadge(p, string, 0, 0, copy, 0); + } else { + Ui::PaintUnreadBadge(p, string, 0, 0, _unreadSt, 0); + } } return image; } diff --git a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.h b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.h index 652ee2759..c66818fbd 100644 --- a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.h +++ b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_slider.h @@ -29,7 +29,7 @@ public: [[nodiscard]] int centerOfSection(int section) const; void fitWidthToSections(); - void setUnreadCount(int index, int unreadCount); + void setUnreadCount(int index, int unreadCount, bool muted); void setLockedFrom(int index); [[nodiscard]] rpl::producer contextMenuRequested() const; @@ -62,7 +62,7 @@ protected: std::vector _sections; private: - [[nodiscard]] QImage cacheUnreadCount(int count) const; + [[nodiscard]] QImage cacheUnreadCount(int count, bool muted) const; [[nodiscard]] int calculateLockedFromX() const; using Index = int; diff --git a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp index b3a65f915..5c80f72ca 100644 --- a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp +++ b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp @@ -330,7 +330,8 @@ not_null AddChatFiltersTabsStrip( const auto muted = (state.chatsMuted + state.marksMuted); const auto count = (state.chats + state.marks) - (includeMuted ? 0 : muted); - slider->setUnreadCount(i, count); + const auto isMuted = includeMuted && (count == muted); + slider->setUnreadCount(i, count, isMuted); slider->fitWidthToSections(); }, state->unreadLifetime); }