From 976c6960043e986dbfe0926cae2af2636c1b029f Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 13 Sep 2023 12:09:00 +0300 Subject: [PATCH] Slightly improved style of mini icons in dialogs list for replies story. --- Telegram/SourceFiles/dialogs/dialogs.style | 33 +++++++++++++------ .../dialogs/ui/dialogs_message_view.cpp | 10 +++--- .../dialogs/ui/dialogs_message_view.h | 4 +-- .../history/history_item_components.cpp | 12 +++---- 4 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index 729ef0662..b9a8c39b2 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -35,6 +35,12 @@ ForumTopicIcon { textTop: pixels; } +DialogsMiniIcon { + icon: ThreeStateIcon; + skipText: pixels; + skipMedia: pixels; +} + defaultForumTopicIcon: ForumTopicIcon { size: 21px; font: font(bold 11px); @@ -462,17 +468,24 @@ dialogsMiniPreviewSkip: 2px; dialogsMiniPreviewRight: 3px; dialogsMiniPlay: icon{{ "dialogs/dialogs_mini_play", videoPlayIconFg }}; -dialogsMiniForwardIcon: ThreeStateIcon { - icon: icon {{ "mini_forward", dialogsTextFg, point(0px, 1px) }}; - over: icon {{ "mini_forward", dialogsTextFgOver, point(0px, 1px) }}; - active: icon {{ "mini_forward", dialogsTextFgActive, point(0px, 1px) }}; +dialogsMiniForward: DialogsMiniIcon { + icon: ThreeStateIcon { + icon: icon {{ "mini_forward", dialogsTextFg, point(0px, 1px) }}; + over: icon {{ "mini_forward", dialogsTextFgOver, point(0px, 1px) }}; + active: icon {{ "mini_forward", dialogsTextFgActive, point(0px, 1px) }}; + } + skipText: 1px; + skipMedia: 2px; } -dialogsMiniIconSkip: 2px; -dialogsMiniIconTextSkip: 1px; -dialogsMiniReplyStoryIcon: ThreeStateIcon { - icon: icon {{ "mini_reply_story", dialogsTextFg, point(0px, 1px) }}; - over: icon {{ "mini_reply_story", dialogsTextFgOver, point(0px, 1px) }}; - active: icon {{ "mini_reply_story", dialogsTextFgActive, point(0px, 1px) }}; + +dialogsMiniReplyStory: DialogsMiniIcon { + icon: ThreeStateIcon { + icon: icon {{ "mini_reply_story", dialogsTextFg, point(0px, 1px) }}; + over: icon {{ "mini_reply_story", dialogsTextFgOver, point(0px, 1px) }}; + active: icon {{ "mini_reply_story", dialogsTextFgActive, point(0px, 1px) }}; + } + skipText: 4px; + skipMedia: 5px; } dialogsUnreadMention: ThreeStateIcon { diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index ca23562cb..f40bf5308 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -160,9 +160,9 @@ void MessageView::prepare( options.spoilerLoginCode = true; auto preview = item->toPreview(options); _leftIcon = (preview.icon == ItemPreview::Icon::ForwardedMessage) - ? &st::dialogsMiniForwardIcon + ? &st::dialogsMiniForward : (preview.icon == ItemPreview::Icon::ReplyToStory) - ? &st::dialogsMiniReplyStoryIcon + ? &st::dialogsMiniReplyStory : nullptr; const auto hasImages = !preview.images.empty(); const auto history = item->history(); @@ -325,7 +325,7 @@ void MessageView::paint( if (_leftIcon) { const auto &icon = ThreeStateIcon( - *_leftIcon, + _leftIcon->icon, context.active, context.selected); const auto w = (icon.width()); @@ -342,8 +342,8 @@ void MessageView::paint( rect.setLeft(rect.x() + w + (_imagesCache.empty() - ? st::dialogsMiniIconTextSkip - : st::dialogsMiniIconSkip)); + ? _leftIcon->skipText + : _leftIcon->skipMedia)); } } for (const auto &image : _imagesCache) { diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h index 86ddc7b0e..58c1966a8 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h @@ -15,7 +15,7 @@ enum class ImageRoundRadius; namespace style { struct DialogRow; -struct ThreeStateIcon; +struct DialogsMiniIcon; } // namespace style namespace Ui { @@ -93,7 +93,7 @@ private: mutable std::vector _imagesCache; mutable std::unique_ptr _spoiler; mutable std::unique_ptr _loadingContext; - mutable const style::ThreeStateIcon *_leftIcon = nullptr; + mutable const style::DialogsMiniIcon *_leftIcon = nullptr; mutable bool _hasPlainLinkAtBegin = false; }; diff --git a/Telegram/SourceFiles/history/history_item_components.cpp b/Telegram/SourceFiles/history/history_item_components.cpp index 3dc030307..0edbbeeff 100644 --- a/Telegram/SourceFiles/history/history_item_components.cpp +++ b/Telegram/SourceFiles/history/history_item_components.cpp @@ -43,7 +43,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_bot.h" #include "styles/style_widgets.h" #include "styles/style_chat.h" -#include "styles/style_dialogs.h" // dialogsMiniReplyStoryIcon. +#include "styles/style_dialogs.h" // dialogsMiniReplyStory. #include @@ -466,8 +466,8 @@ void HistoryMessageReply::updateName( w, std::min(replyToText.maxWidth(), st::maxSignatureSize)) + (storyReply - ? (st::dialogsMiniIconSkip - + st::dialogsMiniReplyStoryIcon.icon.width()) + ? (st::dialogsMiniReplyStory.skipText + + st::dialogsMiniReplyStory.icon.icon.width()) : 0); } else { maxReplyWidth = st::msgDateFont->width(statePhrase()); @@ -611,14 +611,14 @@ void HistoryMessageReply::paint( ? stm->replyTextPalette : st->imgReplyTextPalette()); if (storyReply) { - st::dialogsMiniReplyStoryIcon.icon.paint( + st::dialogsMiniReplyStory.icon.icon.paint( p, replyToTextPosition, w - st::msgReplyBarSkip - previewSkip, replyToTextPalette->linkFg->c); replyToTextPosition += QPoint( - st::dialogsMiniIconSkip - + st::dialogsMiniReplyStoryIcon.icon.width(), + st::dialogsMiniReplyStory.skipText + + st::dialogsMiniReplyStory.icon.icon.width(), 0); } replyToText.draw(p, {