diff --git a/Telegram/SourceFiles/history/history_media.h b/Telegram/SourceFiles/history/history_media.h index e079e6f73..5330857af 100644 --- a/Telegram/SourceFiles/history/history_media.h +++ b/Telegram/SourceFiles/history/history_media.h @@ -163,13 +163,6 @@ public: const QRect &geometry, QPoint point, StateRequest request) const; - virtual std::unique_ptr takeLastFromGroup() { - return nullptr; - } - virtual bool applyGroup( - const std::vector> &items) { - return false; - } virtual bool animating() const { return false; diff --git a/Telegram/SourceFiles/history/history_media_grouped.cpp b/Telegram/SourceFiles/history/history_media_grouped.cpp index d4836990f..30ba0b0ce 100644 --- a/Telegram/SourceFiles/history/history_media_grouped.cpp +++ b/Telegram/SourceFiles/history/history_media_grouped.cpp @@ -21,8 +21,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "layout.h" namespace { + using TextState = HistoryView::TextState; using PointState = HistoryView::PointState; + +constexpr auto kMaxDisplayedGroupSize = 10; + } // namespace HistoryGroupedMedia::Part::Part(not_null item) @@ -34,7 +38,11 @@ HistoryGroupedMedia::HistoryGroupedMedia( const std::vector> &items) : HistoryMedia(parent) , _caption(st::minPhotoSize - st::msgPadding.left() - st::msgPadding.right()) { - const auto result = applyGroup(items); + const auto result = (items.size() <= kMaxDisplayedGroupSize) + ? applyGroup(items) + : applyGroup(std::vector>( + begin(items), + begin(items) + kMaxDisplayedGroupSize)); Ensures(result); } @@ -302,12 +310,10 @@ void HistoryGroupedMedia::clickHandlerPressedChanged( } } -std::unique_ptr HistoryGroupedMedia::takeLastFromGroup() { - return std::move(_parts.back().content); -} - bool HistoryGroupedMedia::applyGroup( const std::vector> &items) { + Expects(items.size() <= kMaxDisplayedGroupSize); + if (items.empty()) { return false; } @@ -315,14 +321,13 @@ bool HistoryGroupedMedia::applyGroup( return true; } - const auto pushElement = [&](not_null item) { + for (const auto item : items) { const auto media = item->media(); Assert(media != nullptr && media->canBeGrouped()); _parts.push_back(Part(item)); _parts.back().content = media->createView(_parent, item); }; - ranges::for_each(items, pushElement); return true; } diff --git a/Telegram/SourceFiles/history/history_media_grouped.h b/Telegram/SourceFiles/history/history_media_grouped.h index 4be0d6ecd..bc0061602 100644 --- a/Telegram/SourceFiles/history/history_media_grouped.h +++ b/Telegram/SourceFiles/history/history_media_grouped.h @@ -59,10 +59,6 @@ public: const ClickHandlerPtr &p, bool pressed) override; - std::unique_ptr takeLastFromGroup() override; - bool applyGroup( - const std::vector> &items) override; - bool hasReplyPreview() const override; ImagePtr replyPreview() override; TextWithEntities getCaption() const override; @@ -100,6 +96,7 @@ private: }; + bool applyGroup(const std::vector> &items); QSize countOptimalSize() override; QSize countCurrentSize(int newWidth) override;