diff --git a/Telegram/SourceFiles/data/data_media_types.cpp b/Telegram/SourceFiles/data/data_media_types.cpp index dc489b9ffd..bd1110d848 100644 --- a/Telegram/SourceFiles/data/data_media_types.cpp +++ b/Telegram/SourceFiles/data/data_media_types.cpp @@ -2323,6 +2323,18 @@ Storage::SharedMediaTypesMask MediaPoll::sharedMediaTypes() const { .added(Storage::SharedMediaType::Poll); } +ItemPreview MediaPoll::toPreview(ToPreviewOptions options) const { + const auto caption = (options.hideCaption || options.ignoreMessageText) + ? TextWithEntities() + : Dialogs::Ui::DialogsPreviewText(options.translated + ? parent()->translatedText() + : parent()->originalText()); + const auto type = u"\xD83D\xDCCA "_q + _poll->question.text; + return { + .text = WithCaptionNotificationText(type, caption), + }; +} + TextWithEntities MediaPoll::notificationText() const { return TextWithEntities() .append(QChar(0xD83D)) diff --git a/Telegram/SourceFiles/data/data_media_types.h b/Telegram/SourceFiles/data/data_media_types.h index 6a061bb77e..ded7677a9c 100644 --- a/Telegram/SourceFiles/data/data_media_types.h +++ b/Telegram/SourceFiles/data/data_media_types.h @@ -635,6 +635,7 @@ public: PollData *poll() const override; Storage::SharedMediaTypesMask sharedMediaTypes() const override; + ItemPreview toPreview(ToPreviewOptions options) const override; TextWithEntities notificationText() const override; QString pinnedTextSubstring() const override; TextForMimeData clipboardText() const override; diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index b1a65787b2..40a6e008dc 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -655,13 +655,23 @@ HistoryItem::HistoryItem( const auto dropText = fields.ignoreForwardCaptions && _media - && (_media->photo() || _media->document()) - && !_media->webpage(); - setText(dropText - ? TextWithEntities() - : dropForwardInfo - ? DropDisallowedCustomEmoji(history->peer, original->originalText()) - : original->originalText()); + && (_media->allowsEditCaption() || _media->poll()); + const auto forwardText = [&] { + if (dropText) { + return TextWithEntities(); + } + const auto &text = original->originalText(); + if (!text.text.isEmpty()) { + return dropForwardInfo + ? DropDisallowedCustomEmoji(history->peer, text) + : TextWithEntities(text); + } + if (const auto media = original->media()) { + return media->consumedMessageText(); + } + return TextWithEntities(); + }(); + setText(forwardText); if (fields.groupedId) { setGroupId(MessageGroupId::FromRaw( diff --git a/Telegram/SourceFiles/history/history_item_helpers.cpp b/Telegram/SourceFiles/history/history_item_helpers.cpp index e88972991c..ddc65d5813 100644 --- a/Telegram/SourceFiles/history/history_item_helpers.cpp +++ b/Telegram/SourceFiles/history/history_item_helpers.cpp @@ -1315,8 +1315,10 @@ int ItemsForwardCaptionsCount(const HistoryItemsList &list) { auto result = 0; for (const auto &item : list) { if (const auto media = item->media()) { - if (!item->originalText().text.isEmpty() - && media->allowsEditCaption()) { + const auto hasCaption = !item->originalText().text.isEmpty() + || !media->consumedMessageText().text.isEmpty(); + if (hasCaption + && (media->allowsEditCaption() || media->poll())) { ++result; } }