From 7740780eebfa80c3aa58e20b6a6720e453e9b015 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 3 Sep 2023 17:20:13 +0300 Subject: [PATCH] Respected presence of plain link in preview text for mini icons. --- .../SourceFiles/dialogs/ui/dialogs_message_view.cpp | 11 +++++++++-- .../SourceFiles/dialogs/ui/dialogs_message_view.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index 253bdc9678..17eb3158d0 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -186,9 +186,12 @@ void MessageView::prepare( _senderCache = { st::dialogsTextWidthMin }; } TextUtilities::Trim(preview.text); + auto textToCache = DialogsPreviewText(std::move(preview.text)); + _hasPlainLinkAtBegin = !textToCache.entities.empty() + && (textToCache.entities.front().type() == EntityType::PlainLink); _textCache.setMarkedText( st::dialogsTextStyle, - DialogsPreviewText(std::move(preview.text)), + std::move(textToCache), DialogTextOptions(), context); _textCachedFor = item; @@ -325,7 +328,11 @@ void MessageView::paint( *_leftIcon, context.active, context.selected); - icon.paint(p, rect.topLeft(), rect.width()); + if (_hasPlainLinkAtBegin && !context.active) { + icon.paint(p, rect.topLeft(), rect.width(), palette->linkFg->c); + } else { + icon.paint(p, rect.topLeft(), rect.width()); + } rect.setLeft(rect.x() + icon.width() + st::dialogsMiniIconSkip); } 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 14f6775364..86ddc7b0e5 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h @@ -94,6 +94,7 @@ private: mutable std::unique_ptr _spoiler; mutable std::unique_ptr _loadingContext; mutable const style::ThreeStateIcon *_leftIcon = nullptr; + mutable bool _hasPlainLinkAtBegin = false; };