From 58d762f1308aa216dad1c50607aa4dca3f2f2a51 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 21 Aug 2023 13:32:09 +0200 Subject: [PATCH] Fix web page video message with reactions. --- .../history/view/history_view_message.cpp | 20 +++++++++++++++---- .../view/media/history_view_web_page.cpp | 4 ++++ .../view/media/history_view_web_page.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_message.cpp b/Telegram/SourceFiles/history/view/history_view_message.cpp index a90580228..e6f7fbcad 100644 --- a/Telegram/SourceFiles/history/view/history_view_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_message.cpp @@ -1027,9 +1027,13 @@ void Message::draw(Painter &p, const PaintContext &context) const { auto trect = inner.marginsRemoved(st::msgPadding); - const auto reactionsTop = (reactionsInBubble && !_viewButton) - ? st::mediaInBubbleSkip + const auto additionalInfoSkip = (mediaDisplayed + && !media->additionalInfoString().isEmpty()) + ? st::msgDateFont->height : 0; + const auto reactionsTop = (reactionsInBubble && !_viewButton) + ? (additionalInfoSkip + st::mediaInBubbleSkip) + : additionalInfoSkip; const auto reactionsHeight = reactionsInBubble ? (reactionsTop + _reactions->height()) : 0; @@ -2045,9 +2049,13 @@ TextState Message::textState( return result; } auto trect = inner.marginsRemoved(st::msgPadding); - const auto reactionsTop = (reactionsInBubble && !_viewButton) - ? st::mediaInBubbleSkip + const auto additionalInfoSkip = (mediaDisplayed + && !media->additionalInfoString().isEmpty()) + ? st::msgDateFont->height : 0; + const auto reactionsTop = (reactionsInBubble && !_viewButton) + ? (additionalInfoSkip + st::mediaInBubbleSkip) + : additionalInfoSkip; const auto reactionsHeight = reactionsInBubble ? (reactionsTop + _reactions->height()) : 0; @@ -3783,6 +3791,10 @@ int Message::resizeContentGetHeight(int newWidth) { if (reactionsInBubble) { if (!mediaDisplayed || _viewButton) { newHeight += st::mediaInBubbleSkip; + } else if (!media->additionalInfoString().isEmpty()) { + // In round videos in a web page status text is painted + // in the bottom left corner, reactions should be below. + newHeight += st::msgDateFont->height; } newHeight += _reactions->height(); } diff --git a/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp b/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp index cec353017..4fb1cef59 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp @@ -829,6 +829,10 @@ bool WebPage::isDisplayed() const { && !item->Has(); } +QString WebPage::additionalInfoString() const { + return _attach ? _attach->additionalInfoString() : QString(); +} + TextForMimeData WebPage::selectedText(TextSelection selection) const { auto siteNameResult = _siteName.toTextForMimeData(selection); auto titleResult = _title.toTextForMimeData( diff --git a/Telegram/SourceFiles/history/view/media/history_view_web_page.h b/Telegram/SourceFiles/history/view/media/history_view_web_page.h index db7bea091..86005d13e 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_web_page.h +++ b/Telegram/SourceFiles/history/view/media/history_view_web_page.h @@ -40,6 +40,7 @@ public: bool hasTextForCopy() const override { return false; // we do not add _title and _description in FullSelection text copy. } + QString additionalInfoString() const override; bool toggleSelectionByHandlerClick(const ClickHandlerPtr &p) const override { return _attach && _attach->toggleSelectionByHandlerClick(p);