From 620777012055f13bd5808facb7f795f6ffeb9585 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 26 Jan 2022 14:47:23 +0300 Subject: [PATCH] Paint unread mention badge as an icon. --- .../icons/dialogs/dialogs_mention.png | Bin 0 -> 569 bytes .../icons/dialogs/dialogs_mention@2x.png | Bin 0 -> 1042 bytes .../icons/dialogs/dialogs_mention@3x.png | Bin 0 -> 1494 bytes .../icons/history_unread_mention.png | Bin 583 -> 708 bytes .../icons/history_unread_mention@2x.png | Bin 995 -> 1477 bytes .../icons/history_unread_mention@3x.png | Bin 2651 -> 2137 bytes Telegram/SourceFiles/boxes/stickers_box.cpp | 11 +- Telegram/SourceFiles/dialogs/dialogs.style | 4 + .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 214 +++++++++++------- .../SourceFiles/dialogs/ui/dialogs_layout.h | 3 +- .../touchbar/items/mac_pinned_chats_item.mm | 3 +- Telegram/SourceFiles/ui/special_buttons.cpp | 2 +- Telegram/SourceFiles/ui/unread_badge.cpp | 2 +- .../SourceFiles/window/window_main_menu.cpp | 10 +- 14 files changed, 156 insertions(+), 93 deletions(-) create mode 100644 Telegram/Resources/icons/dialogs/dialogs_mention.png create mode 100644 Telegram/Resources/icons/dialogs/dialogs_mention@2x.png create mode 100644 Telegram/Resources/icons/dialogs/dialogs_mention@3x.png diff --git a/Telegram/Resources/icons/dialogs/dialogs_mention.png b/Telegram/Resources/icons/dialogs/dialogs_mention.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2937241f9b93618b39d8ada3d7ffc0118c5a86 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1SJ0&Eu0Oc7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzScmXql4N|C(AFvFlY_X?{V~B;| z)xh0dhXO=Qyd5qo*#)o!a%;106cFKNJ;+{m(C9_}57tG?Hh<85!y+xs-TmW+(*?CK zsd&f5t-UOccM@ZTd|KA-J(_xMuJLmpBeuipvQGKeQjA2qkGd#1242b9`s({{nd5i! z%xj;Y_Ffnu;QH}nMUL6*mnBtp^BXJY@wXq=ubsuT>Gxkd2_B`1CnhU#D9t|Gcl`0| zuTtGdP5#!a`XouGsCeGW*%r0-THbc)-nQFsw?*g}*v#}Xc+oo}Q9|Od+3vgh?&kF$ zPhNicpe{$#;fEeegAzXf{3D&Z`fAkr>k6;FTCw;o7rybdh%tP1=!4TwgI0!!Je}V3 zLEV43@F@oc0~tP5Po_2=3#neF_hq{i3|4$u?Zxuo^G}C2->Y4kau4iiJe#)pV#b%> ze+|}Xgii2V?wDdE*?+v)LT1C;pK}c~Pk+iWWA2_4+Sp`Jx-p{1O*!X7)n1^M>#sNJ zWN(e~UK+Ihw(j)PUYo@f@}9IYOggz_+VAadcTVsgODM9NU;kfj*0QfoL7!P7ZRE~B oE#fc};W}u!OlP{c@9pDL?UQuRO*O2tI0}k3Pgg&ebxsLQ01V0D3IG5A literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/dialogs/dialogs_mention@2x.png b/Telegram/Resources/icons/dialogs/dialogs_mention@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6f11148a89cbd74531fa52f1b45e3703f1e17114 GIT binary patch literal 1042 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 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/history_unread_mention.png b/Telegram/Resources/icons/history_unread_mention.png index 1ecd0546b5739cfbe268694e8d3e84f463cb4284..7f717b1c3b444a103ce7454882c821d43cbc06fb 100644 GIT binary patch delta 695 zcmX@ka)fn)WIYoD0|V3Rt|%bISRCZ;#IWw1%u680B{jk`&DWPf3&`eRU~JE1U;!xs zVksbIU|?Rr$iNJw89`zTnBcM^3z!jXkit!OKl}w+q37x17-AvV8*F(#Gf}{9n$y}# z57aqC>nGk}>eWr+TTr@y!+jkV|Kg5>hJHT z&K7h1zMuQy7^7z{*Dw6KYOh$g>-_WSCQ@(9suct>%x34*A1JW+b25GA(jZTzi8Zq% z-Sno1Yl(6R^03Y4TQO}*r%Th}hc>+Lh2G6M|NLR+r7Kxq4|9m#6}F6Ab}(VZ)vViZ z%l5`S=89T7?a_ydJ#LE`>$cyn&A1TFr6$&WQdy`oK=DoG?z?~L>?1?9L|>Xp@ivDu zYKU;9I8Qz??QGirKQ;9N3wGXr&(+#gv!ecF%A|wL2cCVcI_VJF=rFZ^WVXL2{8_k>`bKm{2NBvB{8-I!a{ae1Q^~cw$*p(swCjE$M4$x@1zWj{F*1LKB zYQkUGHn&DZw8gD2x0<`}*wJ+fkL;xk4j&59`a1Qb)CT7n(LVBN9GRUpcJpQV*k3yz Zvfps*`9<>xYhzF{@^tlcS?83{1ON;iD?0!H delta 569 zcmV-90>=Hs1;+%C8Gi-<0051N9Sr~g0uD(;K~y-6om8=^;y@HV@9h?%*hsLjv6(`! z^9QET-e&$GACM+?+r1z@G{#UI$K_xGK%DbJ^_$Jc737?gF~(L@B~-qaSJ5bnih^2e zA|lGN%!)C_C`l4aG{%tDnv_x$MNvUC%d&4l&biH$U$hXyR$K+8l#RQ+sWBLgIgTVj*u;1?i073|KyIlalbUMXkGO->r#yGya-EQza z56xy1p8(KkGynkC>lFYn9*=GCd_FIb+wFFhmn}X4*lM)aPC$7gJkN7t@+6nb zzXJgJ{k}cO!5FjOVHi4MLI|5=yWIkKu}qRA)|0Od;eVWy@B4*D<)fE7;lz$MgBbdcDSCu|Ta>L#x$7mSs4f&zQ|-2!a5| z;}M?c;qiE2xm+R$0_=7>dkqEO8DnyT{_lb_8O9irQofyM-}fm=l6Q&!{pl*dkG}8! z{XJxikusFh5iU0&?|zy8k*ijLbB(vV0 diff --git a/Telegram/Resources/icons/history_unread_mention@2x.png b/Telegram/Resources/icons/history_unread_mention@2x.png index e9d105ee2566c5012cbf88a9b7d8ec289066dbb7..02555b8e4c20b01b6838392159de3c11a61dfc0e 100644 GIT binary patch delta 1470 zcmV;v1ws1b2gM7J8Gix*000A=FFF7K00DDSM?wIu&K&6g002Z~SV?A0O#mtY000O8 z0f%V-1ONa40RR918UO$Q000A^0RRI4000310RRA?0ssU600031001bU0{{d700031 z001Ze0001b=4Pw_00l2eL_t(o3AI;QD1KWM|9obd2`^@Ok$*CU2azE{$Xs3&Z_0xg zL}ZGTLYaz4q=ZKi$y8=CT&2uOB=cN`dw-wvx9o49gYUZ6_rPzh_1kNmv-aL=t)nJW z`Dbfu8yp-Q5)$I->S|?WWn^UZ{QP`>f4{M@@z>jLYHDg}X-Q>&-w}OHa9o_ zR^hk2yquYtX@6p3@}1W&?S_Vi1qB6{mzOF;RH7gad3kx7nwnp_|HK#-6?JxYrsVHm z3Tta?zP`SnxRh|p`k%+;x&4DdObZo;&MIVjK}vI&Lk*;^JbK9~T$*hqJY{MFwE;&3~z^tR%v>AUivoi;W_4cXvk%2L=Wd z1oRwI0p#Z9a?7Hlqgev*{{B9S5fXzR07RC6mgVE)!#QbfZ6yveudAyoLvbJ#0G@+g zgVTh~V+pt<`uh4T2O@WK=I7^G0&q}J5bGp7JY3e*)kUhky*+M0e0)4v0T6&AkjTXj z2!9A5696jl)6)~Vs;Q}wp@)!+ddaeZJ3Bkcij;Ei%93GXb6#6p%UXev26ENk-!I23 zK@9X9!U90sAr08Kx3?s6045Mf>F@7PSOC~E(jcfDM~-CF1i}KqEhG)PAz?|dxVT7q zYin!50zhRXjisff9EXr(6dJ+;z%}4BDu0UN_KcQAYZZYprjU$^O;`Xd+sn&~vvQ)R zrzdGX%G0}w?GPvxa#X>0lMJ&2VF64|PLd`vGV<%g1p<))xcs@hyR%jqx)2>U6n!O| zOcoIlK~@0OuM@~FE-vKF&d!eYgF!`xnTS=f#~8~nDdMQJ1jOdv8zOg!1wOhKHGjdX zsw&pW#KeTm!^4ABp)Av53Lq>jj2jTXE}5)1T!gy1I&@{uLsnLn!uiU|3b8Rna(e>; z3JnqdJGi*GFfcGsbZ_KSQ9R#%IN0dT)6>&}DEu878Un}9&rf_-SsE}BHat8W7#PUu zNql*E!6<<_LZQK(!=<8E!4sLAn|~9P0Qx9f6p1f@-QC^T*jRy#OtKD%i5ileoJ@Qn5K^*rg9WPImf11K#3ZEbCMpkE57cZhwvAOHXW07*qoM6N<$f+kC%nE(I) delta 984 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 0) + const auto counter = (unreadCount > 0) ? QString::number(unreadCount) : QString(); const auto allowDigits = displayMentionBadge ? 1 : 3; - auto unreadRight = st::dialogsPadding.x() + st::dialogsPhotoSize; - auto unreadTop = st::dialogsPadding.y() + st::dialogsPhotoSize - st::dialogsUnreadHeight; - auto unreadWidth = 0; + const auto unreadRight = st::dialogsPadding.x() + + st::dialogsPhotoSize; + const auto unreadTop = st::dialogsPadding.y() + + st::dialogsPhotoSize + - st::dialogsUnreadHeight; UnreadBadgeStyle st; st.active = active; + st.selected = selected; st.muted = unreadMuted; - paintUnreadCount(p, counter, unreadRight, unreadTop, st, &unreadWidth, allowDigits); - skipBeforeMention += unreadWidth + st.padding; + const auto badge = PaintUnreadBadge( + p, + counter, + unreadRight, + unreadTop, + st, + allowDigits); + skipBeforeMention += badge.width() + st.padding; } if (displayMentionBadge) { - auto counter = qsl("@"); - auto unreadRight = st::dialogsPadding.x() + st::dialogsPhotoSize - skipBeforeMention; - auto unreadTop = st::dialogsPadding.y() + st::dialogsPhotoSize - st::dialogsUnreadHeight; - auto unreadWidth = 0; + const auto counter = QString(); + const auto unreadRight = st::dialogsPadding.x() + + st::dialogsPhotoSize + - skipBeforeMention; + const auto unreadTop = st::dialogsPadding.y() + + st::dialogsPhotoSize + - st::dialogsUnreadHeight; UnreadBadgeStyle st; st.active = active; + st.selected = selected; st.muted = mentionMuted; st.padding = 0; st.textTop = 0; - paintUnreadCount(p, counter, unreadRight, unreadTop, st, &unreadWidth); + const auto badge = PaintUnreadBadge( + p, + counter, + unreadRight, + unreadTop, + st); + (st.active + ? st::dialogsUnreadMentionActive + : st.selected + ? st::dialogsUnreadMentionOver + : st::dialogsUnreadMention).paintInCenter(p, badge); } } @@ -136,40 +160,74 @@ int PaintWideCounter( const auto initial = availableWidth; auto hadOneBadge = false; if (displayUnreadCounter || displayUnreadMark) { - auto counter = (unreadCount > 0) + const auto counter = (unreadCount > 0) ? QString::number(unreadCount) : QString(); - auto unreadRight = fullWidth - st::dialogsPadding.x(); - auto unreadTop = texttop + st::dialogsTextFont->ascent - st::dialogsUnreadFont->ascent - (st::dialogsUnreadHeight - st::dialogsUnreadFont->height) / 2; - auto unreadWidth = 0; + const auto unreadRight = fullWidth + - st::dialogsPadding.x(); + const auto unreadTop = texttop + + st::dialogsTextFont->ascent + - st::dialogsUnreadFont->ascent + - (st::dialogsUnreadHeight - st::dialogsUnreadFont->height) / 2; UnreadBadgeStyle st; st.active = active; + st.selected = selected; st.muted = unreadMuted; - paintUnreadCount(p, counter, unreadRight, unreadTop, st, &unreadWidth); - availableWidth -= unreadWidth + st.padding; + const auto badge = PaintUnreadBadge( + p, + counter, + unreadRight, + unreadTop, + st); + availableWidth -= badge.width() + st.padding; hadOneBadge = true; } else if (displayPinnedIcon) { - auto &icon = (active ? st::dialogsPinnedIconActive : (selected ? st::dialogsPinnedIconOver : st::dialogsPinnedIcon)); - icon.paint(p, fullWidth - st::dialogsPadding.x() - icon.width(), texttop, fullWidth); + const auto &icon = active + ? st::dialogsPinnedIconActive + : selected + ? st::dialogsPinnedIconOver + : st::dialogsPinnedIcon; + icon.paint( + p, + fullWidth - st::dialogsPadding.x() - icon.width(), + texttop, + fullWidth); availableWidth -= icon.width() + st::dialogsUnreadPadding; hadOneBadge = true; } if (displayMentionBadge) { - auto counter = qsl("@"); - auto unreadRight = fullWidth - st::dialogsPadding.x() - (initial - availableWidth); - auto unreadTop = texttop + st::dialogsTextFont->ascent - st::dialogsUnreadFont->ascent - (st::dialogsUnreadHeight - st::dialogsUnreadFont->height) / 2; - auto unreadWidth = 0; + const auto counter = QString(); + const auto unreadRight = fullWidth + - st::dialogsPadding.x() + - (initial - availableWidth); + const auto unreadTop = texttop + + st::dialogsTextFont->ascent + - st::dialogsUnreadFont->ascent + - (st::dialogsUnreadHeight - st::dialogsUnreadFont->height) / 2; UnreadBadgeStyle st; st.active = active; + st.selected = selected; st.muted = mentionMuted; st.padding = 0; st.textTop = 0; - paintUnreadCount(p, counter, unreadRight, unreadTop, st, &unreadWidth); - availableWidth -= unreadWidth + st.padding + (hadOneBadge ? st::dialogsUnreadPadding : 0); + const auto badge = PaintUnreadBadge( + p, + counter, + unreadRight, + unreadTop, + st); + (st.active + ? st::dialogsUnreadMentionActive + : st.selected + ? st::dialogsUnreadMentionOver + : st::dialogsUnreadMention).paintInCenter(p, badge); + availableWidth -= badge.width() + + st.padding + + (hadOneBadge ? st::dialogsUnreadPadding : 0); } return availableWidth; } @@ -572,35 +630,7 @@ QImage colorizeCircleHalf(UnreadBadgeSizeData *data, int size, int half, int xof return result; } -} // namepsace - -const style::icon *ChatTypeIcon( - not_null peer, - bool active, - bool selected) { - if (peer->isChat() || peer->isMegagroup()) { - return &(active - ? st::dialogsChatIconActive - : (selected ? st::dialogsChatIconOver : st::dialogsChatIcon)); - } else if (peer->isChannel()) { - return &(active - ? st::dialogsChannelIconActive - : (selected - ? st::dialogsChannelIconOver - : st::dialogsChannelIcon)); - } else if (const auto user = peer->asUser()) { - if (ShowUserBotIcon(user)) { - return &(active - ? st::dialogsBotIconActive - : (selected - ? st::dialogsBotIconOver - : st::dialogsBotIcon)); - } - } - return nullptr; -} - -void paintUnreadBadge(Painter &p, const QRect &rect, const UnreadBadgeStyle &st) { +void PaintUnreadBadge(Painter &p, const QRect &rect, const UnreadBadgeStyle &st) { Assert(rect.height() == st.size); int index = (st.muted ? 0x03 : 0x00) + (st.active ? 0x02 : (st.selected ? 0x01 : 0x00)); @@ -634,46 +664,77 @@ void paintUnreadBadge(Painter &p, const QRect &rect, const UnreadBadgeStyle &st) p.drawPixmap(rect.x() + sizehalf + bar, rect.y(), badgeData->right[index]); } +} // namepsace + +const style::icon *ChatTypeIcon( + not_null peer, + bool active, + bool selected) { + if (peer->isChat() || peer->isMegagroup()) { + return &(active + ? st::dialogsChatIconActive + : (selected ? st::dialogsChatIconOver : st::dialogsChatIcon)); + } else if (peer->isChannel()) { + return &(active + ? st::dialogsChannelIconActive + : (selected + ? st::dialogsChannelIconOver + : st::dialogsChannelIcon)); + } else if (const auto user = peer->asUser()) { + if (ShowUserBotIcon(user)) { + return &(active + ? st::dialogsBotIconActive + : (selected + ? st::dialogsBotIconOver + : st::dialogsBotIcon)); + } + } + return nullptr; +} + UnreadBadgeStyle::UnreadBadgeStyle() : size(st::dialogsUnreadHeight) , padding(st::dialogsUnreadPadding) , font(st::dialogsUnreadFont) { } -void paintUnreadCount( +QRect PaintUnreadBadge( Painter &p, const QString &unreadCount, int x, int y, const UnreadBadgeStyle &st, - int *outUnreadWidth, int allowDigits) { const auto text = (allowDigits > 0) && (unreadCount.size() > allowDigits + 1) ? qsl("..") + unreadCount.mid(unreadCount.size() - allowDigits) : unreadCount; - int unreadWidth = st.font->width(text); - int unreadRectWidth = unreadWidth + 2 * st.padding; - int unreadRectHeight = st.size; - accumulate_max(unreadRectWidth, unreadRectHeight); + const auto unreadRectHeight = st.size; + const auto unreadWidth = st.font->width(text); + const auto unreadRectWidth = std::max( + unreadWidth + 2 * st.padding, + unreadRectHeight); - int unreadRectLeft = x; - if ((st.align & Qt::AlignHorizontal_Mask) & style::al_center) { - unreadRectLeft = (x - unreadRectWidth) / 2; - } else if ((st.align & Qt::AlignHorizontal_Mask) & style::al_right) { - unreadRectLeft = x - unreadRectWidth; - } - int unreadRectTop = y; - if (outUnreadWidth) { - *outUnreadWidth = unreadRectWidth; - } + const auto unreadRectLeft = ((st.align & Qt::AlignHorizontal_Mask) & style::al_center) + ? (x - unreadRectWidth) / 2 + : ((st.align & Qt::AlignHorizontal_Mask) & style::al_right) + ? (x - unreadRectWidth) + : x; + const auto unreadRectTop = y; - paintUnreadBadge(p, QRect(unreadRectLeft, unreadRectTop, unreadRectWidth, unreadRectHeight), st); + const auto badge = QRect(unreadRectLeft, unreadRectTop, unreadRectWidth, unreadRectHeight); + PaintUnreadBadge(p, badge, st); - auto textTop = st.textTop ? st.textTop : (unreadRectHeight - st.font->height) / 2; + const auto textTop = st.textTop ? st.textTop : (unreadRectHeight - st.font->height) / 2; p.setFont(st.font); - p.setPen(st.active ? st::dialogsUnreadFgActive : (st.selected ? st::dialogsUnreadFgOver : st::dialogsUnreadFg)); + p.setPen(st.active + ? st::dialogsUnreadFgActive + : st.selected + ? st::dialogsUnreadFgOver + : st::dialogsUnreadFg); p.drawText(unreadRectLeft + (unreadRectWidth - unreadWidth) / 2, unreadRectTop + textTop + st.font->ascent, text); + + return badge; } void RowPainter::paint( @@ -807,6 +868,7 @@ void RowPainter::paint( displayUnreadMark, displayMentionBadge, unreadCount, + selected, active, unreadMuted, mentionMuted); @@ -925,6 +987,7 @@ void RowPainter::paint( displayUnreadMark, displayMentionBadge, unreadCount, + selected, active, unreadMuted, mentionMuted); @@ -1018,13 +1081,12 @@ void PaintCollapsedRow( const auto unreadRight = fullWidth - st::dialogsPadding.x(); UnreadBadgeStyle st; st.muted = true; - paintUnreadCount( + PaintUnreadBadge( p, QString::number(unread), unreadRight, unreadTop, - st, - nullptr); + st); } } diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h index 46a118329..8f4841e7e 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h @@ -83,13 +83,12 @@ struct UnreadBadgeStyle { UnreadBadgeSize sizeId = UnreadBadgeInDialogs; style::font font; }; -void paintUnreadCount( +QRect PaintUnreadBadge( Painter &p, const QString &t, int x, int y, const UnreadBadgeStyle &st, - int *outUnreadWidth = nullptr, int allowDigits = 0); void clearUnreadBadgesCache(); diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.mm b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.mm index 6b9d7a5dc..f8fe0c7ee 100644 --- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.mm +++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.mm @@ -114,13 +114,12 @@ QImage UnreadBadge(not_null peer) { result.fill(Qt::transparent); Painter p(&result); - Dialogs::Ui::paintUnreadCount( + Dialogs::Ui::PaintUnreadBadge( p, unread, result.width(), result.height() - unreadSt.size, unreadSt, - nullptr, 2); return result; } diff --git a/Telegram/SourceFiles/ui/special_buttons.cpp b/Telegram/SourceFiles/ui/special_buttons.cpp index 03d016e18..69e48594b 100644 --- a/Telegram/SourceFiles/ui/special_buttons.cpp +++ b/Telegram/SourceFiles/ui/special_buttons.cpp @@ -102,7 +102,7 @@ void HistoryDownButton::paintEvent(QPaintEvent *e) { st.font = st::historyToDownBadgeFont; st.size = st::historyToDownBadgeSize; st.sizeId = Dialogs::Ui::UnreadBadgeInHistoryToDown; - Dialogs::Ui::paintUnreadCount(p, unreadString, width(), 0, st, nullptr, 4); + Dialogs::Ui::PaintUnreadBadge(p, unreadString, width(), 0, st, 4); } } diff --git a/Telegram/SourceFiles/ui/unread_badge.cpp b/Telegram/SourceFiles/ui/unread_badge.cpp index 167351b99..bc82d4a50 100644 --- a/Telegram/SourceFiles/ui/unread_badge.cpp +++ b/Telegram/SourceFiles/ui/unread_badge.cpp @@ -40,7 +40,7 @@ void UnreadBadge::paintEvent(QPaintEvent *e) { unreadSt.muted = !_active; auto unreadRight = width(); auto unreadTop = 0; - Dialogs::Ui::paintUnreadCount( + Dialogs::Ui::PaintUnreadBadge( p, _text, unreadRight, diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index f30802fb3..4a9c8bd98 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -293,19 +293,19 @@ void MainMenu::AccountButton::paintEvent(QPaintEvent *e) { const auto string = (_unreadBadge > 99) ? "99+" : QString::number(_unreadBadge); - auto unreadWidth = 0; const auto skip = _st.itemPadding.right() - st::mainMenu.itemToggleShift; const auto unreadRight = width() - skip; const auto unreadTop = (height() - _unreadSt.size) / 2; - Dialogs::Ui::paintUnreadCount( + const auto badge = Dialogs::Ui::PaintUnreadBadge( p, string, unreadRight, unreadTop, - _unreadSt, - &unreadWidth); - available -= unreadWidth + skip + st::mainMenu.itemStyle.font->spacew; + _unreadSt); + available -= badge.width() + + skip + + st::mainMenu.itemStyle.font->spacew; } else { available -= _st.itemPadding.right(); }