From eb821c1f360d622a503e0f459b400b8d62ef6631 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 27 Nov 2024 11:58:34 +0300 Subject: [PATCH] Improved display of unread badges in dialogs list with narrowed mode. --- .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index f78d9dc09..d0324d3f2 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -140,8 +140,9 @@ int PaintBadges( BadgesState badgesState, int right, int top, - bool displayPinnedIcon = false, - int pinnedIconTop = 0) { + bool displayPinnedIcon, + int pinnedIconTop, + bool narrow) { auto initial = right; if (const auto used = PaintRightButton(p, context)) { return used - st::dialogsUnreadPadding; @@ -175,9 +176,16 @@ int PaintBadges( st.active = context.active; st.selected = context.selected; st.muted = badgesState.unreadMuted; - const auto counter = (badgesState.unreadCounter > 0) + const auto counter = (badgesState.unreadCounter <= 0) + ? QString() + : !narrow ? QString::number(badgesState.unreadCounter) - : QString(); + : ((badgesState.mention || badgesState.reaction) + && (badgesState.unreadCounter > 999)) + ? (u"99+"_q) + : (badgesState.unreadCounter > 999999) + ? (u"99999+"_q) + : QString::number(badgesState.unreadCounter); const auto badge = PaintUnreadBadge(p, counter, right, top, st); right -= badge.width() + st.padding; } else if (displayPinnedIcon) { @@ -241,7 +249,10 @@ void PaintNarrowCounter( context, badgesState, context.st->padding.left() + context.st->photoSize, - top); + top, + false, + 0, + true); } int PaintWideCounter( @@ -262,7 +273,8 @@ int PaintWideCounter( context.width - context.st->padding.right(), top, displayPinnedIcon, - texttop); + texttop, + false); return availableWidth - used; }