From db8878932f4398678770a3b9df2d22e2c6c60c89 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 24 Mar 2026 22:55:49 +0300 Subject: [PATCH] Replaced badge-based dialogs icons with standalone colored icons. --- .../dialogs_chatlist_mention.svg} | 0 .../dialogs_chatlist_poll.svg} | 0 .../dialogs_chatlist_reaction.svg} | 0 Telegram/SourceFiles/boxes/polls.style | 3 -- Telegram/SourceFiles/dialogs/dialogs.style | 33 ++++++++---- .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 51 ++++++++----------- .../ui/controls/subsection_tabs_slider.cpp | 46 ++++++++--------- Telegram/lib_ui | 2 +- 8 files changed, 65 insertions(+), 70 deletions(-) rename Telegram/Resources/icons/{poll/filled/filled_chatlist_mention.svg => dialogs/dialogs_chatlist_mention.svg} (100%) rename Telegram/Resources/icons/{poll/filled/filled_chatlist_poll.svg => dialogs/dialogs_chatlist_poll.svg} (100%) rename Telegram/Resources/icons/{poll/filled/filled_chatlist_reaction.svg => dialogs/dialogs_chatlist_reaction.svg} (100%) diff --git a/Telegram/Resources/icons/poll/filled/filled_chatlist_mention.svg b/Telegram/Resources/icons/dialogs/dialogs_chatlist_mention.svg similarity index 100% rename from Telegram/Resources/icons/poll/filled/filled_chatlist_mention.svg rename to Telegram/Resources/icons/dialogs/dialogs_chatlist_mention.svg diff --git a/Telegram/Resources/icons/poll/filled/filled_chatlist_poll.svg b/Telegram/Resources/icons/dialogs/dialogs_chatlist_poll.svg similarity index 100% rename from Telegram/Resources/icons/poll/filled/filled_chatlist_poll.svg rename to Telegram/Resources/icons/dialogs/dialogs_chatlist_poll.svg diff --git a/Telegram/Resources/icons/poll/filled/filled_chatlist_reaction.svg b/Telegram/Resources/icons/dialogs/dialogs_chatlist_reaction.svg similarity index 100% rename from Telegram/Resources/icons/poll/filled/filled_chatlist_reaction.svg rename to Telegram/Resources/icons/dialogs/dialogs_chatlist_reaction.svg diff --git a/Telegram/SourceFiles/boxes/polls.style b/Telegram/SourceFiles/boxes/polls.style index 496fdb3912..00dbc68b9d 100644 --- a/Telegram/SourceFiles/boxes/polls.style +++ b/Telegram/SourceFiles/boxes/polls.style @@ -93,12 +93,9 @@ pollBoxMenuPollOrderIcon: icon{{ "poll/general/menu_poll_order-24x24", historyCo pollBoxFilledPollDeadlineIcon: icon{{ "poll/filled/filled_poll_deadline", activeButtonFg }}; pollBoxFilledPollViewIcon: icon{{ "poll/filled/filled_poll_view", activeButtonFg }}; pollBoxFilledPollAddIcon: icon{{ "poll/filled/filled_poll_add", activeButtonFg }}; -pollBoxFilledChatlistPollIcon: icon{{ "poll/filled/filled_chatlist_poll", activeButtonFg }}; pollBoxFilledPollCorrectIcon: icon{{ "poll/filled/filled_poll_correct", activeButtonFg }}; -pollBoxFilledChatlistReactionIcon: icon{{ "poll/filled/filled_chatlist_reaction", activeButtonFg }}; pollBoxFilledPollRevoteIcon: icon{{ "poll/filled/filled_poll_revote", activeButtonFg }}; pollBoxFilledPollShuffleIcon: icon{{ "poll/filled/filled_poll_shuffle", activeButtonFg }}; -pollBoxFilledChatlistMentionIcon: icon{{ "poll/filled/filled_chatlist_mention", activeButtonFg }}; pollBoxFilledPollMultipleIcon: icon{{ "poll/filled/filled_poll_multiple", activeButtonFg }}; pollAttachTextSkip: 28px; diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index 5e6fd8b159..aa11903d5a 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -577,19 +577,34 @@ dialogsMiniReplyStory: DialogsMiniIcon { } dialogsUnreadMention: ThreeStateIcon { - icon: icon{{ "dialogs/dialogs_mention", dialogsUnreadFg }}; - over: icon{{ "dialogs/dialogs_mention", dialogsUnreadFgOver }}; - active: icon{{ "dialogs/dialogs_mention", dialogsUnreadFgActive }}; + icon: icon{{ "dialogs/dialogs_chatlist_mention-18x18", dialogsMentionIconFg }}; + over: icon{{ "dialogs/dialogs_chatlist_mention-18x18", dialogsMentionIconFg }}; + active: icon{{ "dialogs/dialogs_chatlist_mention-18x18", dialogsNameFgActive }}; +} +dialogsUnreadMentionMuted: ThreeStateIcon { + icon: icon{{ "dialogs/dialogs_chatlist_mention-18x18", dialogsUnreadBgMuted }}; + over: icon{{ "dialogs/dialogs_chatlist_mention-18x18", dialogsUnreadBgMutedOver }}; + active: icon{{ "dialogs/dialogs_chatlist_mention-18x18", dialogsUnreadBgMutedActive }}; } dialogsUnreadReaction: ThreeStateIcon { - icon: icon{{ "dialogs/dialogs_reaction", dialogsUnreadFg }}; - over: icon{{ "dialogs/dialogs_reaction", dialogsUnreadFgOver }}; - active: icon{{ "dialogs/dialogs_reaction", dialogsUnreadFgActive }}; + icon: icon{{ "dialogs/dialogs_chatlist_reaction-18x18", dialogsReactionIconFg }}; + over: icon{{ "dialogs/dialogs_chatlist_reaction-18x18", dialogsReactionIconFg }}; + active: icon{{ "dialogs/dialogs_chatlist_reaction-18x18", dialogsNameFgActive }}; +} +dialogsUnreadReactionMuted: ThreeStateIcon { + icon: icon{{ "dialogs/dialogs_chatlist_reaction-18x18", dialogsUnreadBgMuted }}; + over: icon{{ "dialogs/dialogs_chatlist_reaction-18x18", dialogsUnreadBgMutedOver }}; + active: icon{{ "dialogs/dialogs_chatlist_reaction-18x18", dialogsUnreadBgMutedActive }}; } dialogsUnreadPoll: ThreeStateIcon { - icon: icon{{ "poll/filled/filled_chatlist_poll-18x18", dialogsUnreadFg }}; - over: icon{{ "poll/filled/filled_chatlist_poll-18x18", dialogsUnreadFgOver }}; - active: icon{{ "poll/filled/filled_chatlist_poll-18x18", dialogsUnreadFgActive }}; + icon: icon{{ "dialogs/dialogs_chatlist_poll-18x18", dialogsPollIconFg }}; + over: icon{{ "dialogs/dialogs_chatlist_poll-18x18", dialogsPollIconFg }}; + active: icon{{ "dialogs/dialogs_chatlist_poll-18x18", dialogsNameFgActive }}; +} +dialogsUnreadPollMuted: ThreeStateIcon { + icon: icon{{ "dialogs/dialogs_chatlist_poll-18x18", dialogsUnreadBgMuted }}; + over: icon{{ "dialogs/dialogs_chatlist_poll-18x18", dialogsUnreadBgMutedOver }}; + active: icon{{ "dialogs/dialogs_chatlist_poll-18x18", dialogsUnreadBgMutedActive }}; } downloadBarHeight: 46px; diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index f8ec4f0c77..38688943e5 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -199,42 +199,31 @@ int PaintBadges( right -= icon.width() + st::dialogsUnreadPadding; } if (badgesState.mention || badgesState.reaction) { - UnreadBadgeStyle st; - st.sizeId = badgesState.mention - ? UnreadBadgeSize::Dialogs - : UnreadBadgeSize::ReactionInDialogs; - st.active = context.active; - st.selected = context.selected; - st.muted = badgesState.mention + const auto muted = badgesState.mention ? badgesState.mentionMuted : badgesState.reactionMuted; - st.padding = 0; - st.textTop = 0; - const auto counter = QString(); - const auto badge = PaintUnreadBadge(p, counter, right, top, st); - ThreeStateIcon( + const auto &icon = ThreeStateIcon( badgesState.mention - ? st::dialogsUnreadMention - : st::dialogsUnreadReaction, - st.active, - st.selected).paintInCenter(p, badge); - right -= badge.width() + st.padding + st::dialogsUnreadPadding; + ? (muted + ? st::dialogsUnreadMentionMuted + : st::dialogsUnreadMention) + : (muted + ? st::dialogsUnreadReactionMuted + : st::dialogsUnreadReaction), + context.active, + context.selected); + icon.paint(p, right - icon.width(), top, context.width); + right -= icon.width() + st::dialogsUnreadPadding; } if (badgesState.poll) { - UnreadBadgeStyle st; - st.sizeId = UnreadBadgeSize::ReactionInDialogs; - st.active = context.active; - st.selected = context.selected; - st.muted = badgesState.pollMuted; - st.padding = 0; - st.textTop = 0; - const auto counter = QString(); - const auto badge = PaintUnreadBadge(p, counter, right, top, st); - ThreeStateIcon( - st::dialogsUnreadPoll, - st.active, - st.selected).paintInCenter(p, badge); - right -= badge.width() + st.padding + st::dialogsUnreadPadding; + const auto &icon = ThreeStateIcon( + badgesState.pollMuted + ? st::dialogsUnreadPollMuted + : st::dialogsUnreadPoll, + context.active, + context.selected); + icon.paint(p, right - icon.width(), top, context.width); + right -= icon.width() + st::dialogsUnreadPadding; } return (initial - right); } diff --git a/Telegram/SourceFiles/ui/controls/subsection_tabs_slider.cpp b/Telegram/SourceFiles/ui/controls/subsection_tabs_slider.cpp index 9dcea1146d..0e6eec116f 100644 --- a/Telegram/SourceFiles/ui/controls/subsection_tabs_slider.cpp +++ b/Telegram/SourceFiles/ui/controls/subsection_tabs_slider.cpp @@ -263,21 +263,18 @@ void VerticalButton::paintEvent(QPaintEvent *e) { right -= badge.width() + st.padding; } if (state.mention || state.reaction) { - UnreadBadgeStyle st; - st.sizeId = state.mention - ? UnreadBadgeSize::Dialogs - : UnreadBadgeSize::ReactionInDialogs; - st.muted = state.mention + const auto muted = state.mention ? state.mentionMuted : state.reactionMuted; - st.padding = 0; - st.textTop = 0; - const auto counter = QString(); - const auto badge = PaintUnreadBadge(p, counter, right, top, st); - (state.mention - ? st::dialogsUnreadMention.icon - : st::dialogsUnreadReaction.icon).paintInCenter(p, badge); - right -= badge.width() + st.padding + st::dialogsUnreadPadding; + const auto &icon = state.mention + ? (muted + ? st::dialogsUnreadMentionMuted.icon + : st::dialogsUnreadMention.icon) + : (muted + ? st::dialogsUnreadReactionMuted.icon + : st::dialogsUnreadReaction.icon); + icon.paint(p, right - icon.width(), top, width()); + right -= icon.width() + st::dialogsUnreadPadding; } if (isPinned() && isFirstPinned()) { PaintPinnedIcon(p, width(), _backgroundMargin); @@ -443,21 +440,18 @@ void HorizontalButton::paintEvent(QPaintEvent *e) { right -= badge.width() + st.padding; } if (state.mention || state.reaction) { - UnreadBadgeStyle st; - st.sizeId = state.mention - ? UnreadBadgeSize::Dialogs - : UnreadBadgeSize::ReactionInDialogs; - st.muted = state.mention + const auto muted = state.mention ? state.mentionMuted : state.reactionMuted; - st.padding = 0; - st.textTop = 0; - const auto counter = QString(); - const auto badge = PaintUnreadBadge(p, counter, right, badgeTop, st); - (state.mention - ? st::dialogsUnreadMention.icon - : st::dialogsUnreadReaction.icon).paintInCenter(p, badge); - right -= badge.width() + st.padding + st::dialogsUnreadPadding; + const auto &icon = state.mention + ? (muted + ? st::dialogsUnreadMentionMuted.icon + : st::dialogsUnreadMention.icon) + : (muted + ? st::dialogsUnreadReactionMuted.icon + : st::dialogsUnreadReaction.icon); + icon.paint(p, right - icon.width(), badgeTop, width()); + right -= icon.width() + st::dialogsUnreadPadding; } if (isPinned() && isFirstPinned()) { diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 5977759c8a..673106851d 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 5977759c8a00c8e69170e27929c71daa761950fc +Subproject commit 673106851d1af91728bf53c4399c009abb86490d