diff --git a/Telegram/SourceFiles/core/ui_integration.cpp b/Telegram/SourceFiles/core/ui_integration.cpp index 7b74de161..f205709d4 100644 --- a/Telegram/SourceFiles/core/ui_integration.cpp +++ b/Telegram/SourceFiles/core/ui_integration.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "core/click_handler_types.h" #include "data/stickers/data_custom_emoji.h" #include "data/data_session.h" +#include "ui/text/text_custom_emoji.h" #include "ui/basic_click_handlers.h" #include "ui/emoji_config.h" #include "lang/lang_keys.h" @@ -249,9 +250,15 @@ std::unique_ptr UiIntegration::createCustomEmoji( if (!my || !my->session) { return nullptr; } - return my->session->data().customEmojiManager().create( + auto result = my->session->data().customEmojiManager().create( data, my->customEmojiRepaint); + if (my->customEmojiLoopLimit > 0) { + return std::make_unique( + std::move(result), + my->customEmojiLoopLimit); + } + return result; } Fn UiIntegration::createSpoilerRepaint(const std::any &context) { diff --git a/Telegram/SourceFiles/core/ui_integration.h b/Telegram/SourceFiles/core/ui_integration.h index 18b9bc718..44ef1ee8b 100644 --- a/Telegram/SourceFiles/core/ui_integration.h +++ b/Telegram/SourceFiles/core/ui_integration.h @@ -29,6 +29,7 @@ struct MarkedTextContext { Main::Session *session = nullptr; HashtagMentionType type = HashtagMentionType::Telegram; Fn customEmojiRepaint; + int customEmojiLoopLimit = 0; }; class UiIntegration final : public Ui::Integration { diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index 0a7a7446a..e025b9438 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -23,6 +23,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace { +constexpr auto kEmojiLoopCount = 2; + template struct TextWithTagOffset { TextWithTagOffset(TextWithEntities text) : text(std::move(text)) { @@ -142,6 +144,7 @@ void MessageView::prepare( const auto context = Core::MarkedTextContext{ .session = &history->session(), .customEmojiRepaint = customEmojiRepaint, + .customEmojiLoopLimit = kEmojiLoopCount, }; const auto senderTill = (preview.arrowInTextPosition > 0) ? preview.arrowInTextPosition