From 1024f38944e25df663f38b352b9ad510d11632b2 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 16 Jun 2020 19:54:23 +0400 Subject: [PATCH] Fix inline bot video results without documents. Fixes #8060. --- .../inline_bot_layout_internal.cpp | 34 +++++++++++-------- .../inline_bots/inline_bot_result.cpp | 14 -------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp index 3617ac64d..d5a9b930a 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp @@ -679,8 +679,6 @@ Video::Video(not_null context, not_null result) , _link(getResultPreviewHandler()) , _title(st::emojiPanWidth - st::emojiScroll.width - st::inlineResultsLeft - st::inlineThumbSize - st::inlineThumbSkip) , _description(st::emojiPanWidth - st::emojiScroll.width - st::inlineResultsLeft - st::inlineThumbSize - st::inlineThumbSkip) { - Assert(getResultDocument() != nullptr); - if (int duration = content_duration()) { _duration = formatDurationText(duration); _durationWidth = st::normalFont->width(_duration); @@ -688,10 +686,12 @@ Video::Video(not_null context, not_null result) } bool Video::withThumbnail() const { - const auto document = getShownDocument(); - Assert(document != nullptr); - - return document->hasThumbnail(); + if (const auto document = getShownDocument()) { + if (document->hasThumbnail()) { + return true; + } + } + return hasResultThumb(); } void Video::initDimensions() { @@ -761,6 +761,7 @@ void Video::paint(Painter &p, const QRect &clip, const PaintContext *context) co void Video::unloadHeavyPart() { _documentMedia = nullptr; + ItemBase::unloadHeavyPart(); } TextState Video::getState( @@ -776,17 +777,20 @@ TextState Video::getState( } void Video::prepareThumbnail(QSize size) const { - const auto document = getShownDocument(); - if (document->hasThumbnail()) { - if (!_documentMedia) { - _documentMedia = document->createMediaView(); - _documentMedia->thumbnailWanted(fileOrigin()); - } - if (!_documentMedia->thumbnail()) { - return; + if (const auto document = getShownDocument()) { + if (document->hasThumbnail()) { + if (!_documentMedia) { + _documentMedia = document->createMediaView(); + _documentMedia->thumbnailWanted(fileOrigin()); + } + if (!_documentMedia->thumbnail()) { + return; + } } } - const auto thumb = _documentMedia->thumbnail(); + const auto thumb = _documentMedia + ? _documentMedia->thumbnail() + : getResultThumb(fileOrigin()); if (!thumb) { return; } diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp index cb03bf797..1417c14a5 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_bot_result.cpp @@ -162,7 +162,6 @@ std::unique_ptr Result::Create( } } else if (result->_type == Type::Audio || result->_type == Type::File - || result->_type == Type::Video || result->_type == Type::Sticker || result->_type == Type::Gif) { if (!result->_document) { @@ -213,19 +212,6 @@ std::unique_ptr Result::Create( qs(r.vmessage()), Api::EntitiesFromMTP(session, r.ventities().value_or_empty()), r.is_no_webpage()); - if (result->_type == Type::Photo) { - if (!result->_photo) { - return nullptr; - } - } else if (result->_type == Type::Audio - || result->_type == Type::File - || result->_type == Type::Video - || result->_type == Type::Sticker - || result->_type == Type::Gif) { - if (!result->_document) { - return nullptr; - } - } if (const auto markup = r.vreply_markup()) { result->_mtpKeyboard = std::make_unique(*markup); }