From b4571b80d66fe66f7fd55fb3ef73456e6727ad46 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 27 Dec 2022 13:10:38 +0400 Subject: [PATCH] Show spoilers in shared media overview. --- .../info/media/info_media_list_widget.cpp | 7 +- .../info/media/info_media_provider.cpp | 12 +++- .../SourceFiles/layout/abstract_layout_item.h | 4 +- .../SourceFiles/overview/overview_layout.cpp | 71 +++++++++++++++---- .../SourceFiles/overview/overview_layout.h | 23 +++++- 5 files changed, 95 insertions(+), 22 deletions(-) diff --git a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp index ffce0bb004..48e00a41b2 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp @@ -761,8 +761,11 @@ void ListWidget::paintEvent(QPaintEvent *e) { auto tillSectionIt = findSectionAfterBottom( fromSectionIt, clip.y() + clip.height()); - auto context = ListContext { - Overview::Layout::PaintContext(ms, hasSelectedItems()), + const auto window = _controller->parentController(); + const auto paused = window->isGifPausedAtLeastFor( + Window::GifPauseReason::Layer); + auto context = ListContext{ + Overview::Layout::PaintContext(ms, hasSelectedItems(), paused), &_selected, &_dragSelected, _dragSelectAction diff --git a/Telegram/SourceFiles/info/media/info_media_provider.cpp b/Telegram/SourceFiles/info/media/info_media_provider.cpp index 6d17213d17..f2d8dcde78 100644 --- a/Telegram/SourceFiles/info/media/info_media_provider.cpp +++ b/Telegram/SourceFiles/info/media/info_media_provider.cpp @@ -416,18 +416,24 @@ std::unique_ptr Provider::createLayout( return nullptr; }; const auto getFile = [&]() -> DocumentData* { - if (auto media = item->media()) { + if (const auto media = item->media()) { return media->document(); } return nullptr; }; + const auto spoiler = [&] { + if (const auto media = item->media()) { + return media->hasSpoiler(); + } + return false; + }; const auto &songSt = st::overviewFileLayout; using namespace Overview::Layout; switch (type) { case Type::Photo: if (const auto photo = getPhoto()) { - return std::make_unique(delegate, item, photo); + return std::make_unique(delegate, item, photo, spoiler()); } return nullptr; case Type::GIF: @@ -437,7 +443,7 @@ std::unique_ptr Provider::createLayout( return nullptr; case Type::Video: if (const auto file = getFile()) { - return std::make_unique