Added preview for media from poll option to input field reply header.

This commit is contained in:
23rd
2026-03-26 12:54:22 +03:00
parent 589e486cb8
commit 0d003967e8
2 changed files with 41 additions and 4 deletions
@@ -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();
@@ -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();