diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index da0f63cfba..849760d74b 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -79,6 +79,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_document_media.h" #include "data/data_photo.h" #include "data/data_photo_media.h" +#include "data/data_poll.h" #include "data/data_channel.h" #include "data/data_chat.h" #include "data/data_forum.h" @@ -9814,10 +9815,26 @@ void HistoryWidget::drawField(Painter &p, const QRect &rect) { const auto media = (!_previewDrawPreview && drawMsgText) ? drawMsgText->media() : nullptr; - const auto hasPreview = media && media->hasReplyPreview(); + const auto poll = media ? media->poll() : nullptr; + const auto pollAnswer = poll + ? poll->answerByOption(_replyTo.pollOption) + : nullptr; + const auto pollMediaPtr = pollAnswer + ? &pollAnswer->media + : (poll && _replyTo.pollOption.isEmpty()) + ? &poll->attachedMedia + : nullptr; + const auto pollMediaHasPreview = pollMediaPtr + && (pollMediaPtr->photo || pollMediaPtr->document); + const auto hasPreview = pollMediaHasPreview + || (media && media->hasReplyPreview()); const auto preview = _mediaEditManager ? _mediaEditManager.mediaPreview() - : hasPreview + : pollMediaHasPreview + ? (pollMediaPtr->photo + ? pollMediaPtr->photo->getReplyPreview(drawMsgText) + : pollMediaPtr->document->getReplyPreview(drawMsgText)) + : (media && media->hasReplyPreview()) ? media->replyPreview() : nullptr; const auto spoilered = _mediaEditManager.spoilered(); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp index 455bba1bf2..88ffa34c91 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -43,7 +43,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_file_origin.h" #include "data/data_forum_topic.h" #include "data/data_peer_values.h" +#include "data/data_document.h" +#include "data/data_photo.h" #include "data/data_photo_media.h" +#include "data/data_poll.h" #include "data/data_premium_limits.h" // Data::PremiumLimits. #include "data/stickers/data_stickers.h" #include "data/stickers/data_custom_emoji.h" @@ -637,10 +640,27 @@ void FieldHeader::paintEditOrReplyToMessage(Painter &p) { } const auto media = _shownMessage->media(); - _shownMessageHasPreview = media && media->hasReplyPreview(); + const auto poll = media ? media->poll() : nullptr; + const auto reply = replyingToMessage(); + const auto pollAnswer = poll + ? poll->answerByOption(reply.pollOption) + : nullptr; + const auto pollMediaPtr = pollAnswer + ? &pollAnswer->media + : (poll && reply.pollOption.isEmpty()) + ? &poll->attachedMedia + : nullptr; + const auto pollMediaHasPreview = pollMediaPtr + && (pollMediaPtr->photo || pollMediaPtr->document); + _shownMessageHasPreview = pollMediaHasPreview + || (media && media->hasReplyPreview()); const auto preview = _mediaEditManager ? _mediaEditManager.mediaPreview() - : _shownMessageHasPreview + : pollMediaHasPreview + ? (pollMediaPtr->photo + ? pollMediaPtr->photo->getReplyPreview(_shownMessage) + : pollMediaPtr->document->getReplyPreview(_shownMessage)) + : (media && media->hasReplyPreview()) ? media->replyPreview() : nullptr; const auto spoilered = _mediaEditManager.spoilered();