From b079c79390becd9e4554c809c66dcf1a081c935f Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 17 Mar 2025 10:02:36 +0300 Subject: [PATCH] Added correspond colors for every swipe dialog action. --- .../dialogs/dialogs_swipe_action.cpp | 25 +++++++++++++++++++ .../dialogs/dialogs_swipe_action.h | 5 ++++ .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 12 ++++----- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_swipe_action.cpp b/Telegram/SourceFiles/dialogs/dialogs_swipe_action.cpp index 9409b3a1e5..4a780ad956 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_swipe_action.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_swipe_action.cpp @@ -138,4 +138,29 @@ QString ResolveSwipeDialogLabel(Ui::SwipeDialogActionLabel action) { }; } +const style::color &ResolveSwipeActionBg( + Ui::SwipeDialogActionLabel action) { + switch (action) { + case Ui::SwipeDialogActionLabel::Delete: + return st::attentionButtonFg; + case Ui::SwipeDialogActionLabel::Disabled: + return st::windowSubTextFgOver; + case Ui::SwipeDialogActionLabel::Mute: + case Ui::SwipeDialogActionLabel::Unmute: + case Ui::SwipeDialogActionLabel::Pin: + case Ui::SwipeDialogActionLabel::Unpin: + case Ui::SwipeDialogActionLabel::Read: + case Ui::SwipeDialogActionLabel::Unread: + case Ui::SwipeDialogActionLabel::Archive: + case Ui::SwipeDialogActionLabel::Unarchive: + default: + return st::windowBgActive; + }; +} + +const style::color &ResolveSwipeActionBgActive( + Ui::SwipeDialogActionLabel action) { + return st::windowSubTextFgOver; +} + } // namespace Dialogs diff --git a/Telegram/SourceFiles/dialogs/dialogs_swipe_action.h b/Telegram/SourceFiles/dialogs/dialogs_swipe_action.h index 3918f983a7..db49ce31d5 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_swipe_action.h +++ b/Telegram/SourceFiles/dialogs/dialogs_swipe_action.h @@ -39,4 +39,9 @@ void PerformSwipeDialogAction( [[nodiscard]] QString ResolveSwipeDialogLabel(Ui::SwipeDialogActionLabel); +[[nodiscard]] const style::color &ResolveSwipeActionBg( + Ui::SwipeDialogActionLabel); +[[nodiscard]] const style::color &ResolveSwipeActionBgActive( + Ui::SwipeDialogActionLabel); + } // namespace Dialogs diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index 83b140292d..c22bc2dc40 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -879,10 +879,14 @@ void PaintRow( swipeTranslation, geometry.height()); p.setClipRegion(swipeActionRect); - p.fillRect(swipeActionRect, st::attentionButtonFg); + const auto labelType = ResolveSwipeDialogLabel( + history, + context.swipeContext.action, + context.filter); + p.fillRect(swipeActionRect, ResolveSwipeActionBg(labelType)); if (context.swipeContext.data.reachRatio) { p.setPen(Qt::NoPen); - p.setBrush(st::windowBgActive); + p.setBrush(ResolveSwipeActionBgActive(labelType)); const auto r = swipeTranslation * context.swipeContext.data.reachRatio; const auto offset = st::dialogsSwipeActionSize @@ -909,10 +913,6 @@ void PaintRow( - iconOffset * 2 - st::dialogsSwipeActionSize; const auto availableWidth = geometry.width() - left; - const auto labelType = ResolveSwipeDialogLabel( - history, - context.swipeContext.action, - context.filter); p.setFont(SwipeActionFont(labelType, availableWidth)); p.drawText( QRect(left, 0, availableWidth, geometry.height()),