From 1f070da2024c9614d3005dd732c988ffd73ea3c6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Sat, 16 Dec 2017 19:25:21 +0400 Subject: [PATCH] Recount grouping after leader caption edit. --- Telegram/SourceFiles/history/history.cpp | 9 +++++++++ Telegram/SourceFiles/history/history.h | 1 + Telegram/SourceFiles/history/history_media_grouped.cpp | 4 ++++ Telegram/SourceFiles/history/history_media_grouped.h | 3 ++- Telegram/SourceFiles/history/history_message.cpp | 1 + 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index 25fef0d979..56494bc4d3 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -2125,6 +2125,15 @@ not_null History::findGroupLast( return group->leader; } +void History::recountGroupingAround(not_null item) { + Expects(item->history() == this); + + if (!item->detached() && item->groupId()) { + const auto [groupFrom, groupTill] = recountGroupingFromTill(item); + recountGrouping(groupFrom, groupTill); + } +} + auto History::recountGroupingFromTill(not_null item) -> std::pair, not_null> { const auto recountFromItem = [&] { diff --git a/Telegram/SourceFiles/history/history.h b/Telegram/SourceFiles/history/history.h index 055ecaa407..74a7a64ac5 100644 --- a/Telegram/SourceFiles/history/history.h +++ b/Telegram/SourceFiles/history/history.h @@ -422,6 +422,7 @@ public: } HistoryItemsList validateForwardDraft(); void setForwardDraft(MessageIdsList &&items); + void recountGroupingAround(not_null item); // some fields below are a property of a currently displayed instance of this // conversation history not a property of the conversation history itself diff --git a/Telegram/SourceFiles/history/history_media_grouped.cpp b/Telegram/SourceFiles/history/history_media_grouped.cpp index a98404e49c..57122e962e 100644 --- a/Telegram/SourceFiles/history/history_media_grouped.cpp +++ b/Telegram/SourceFiles/history/history_media_grouped.cpp @@ -393,6 +393,10 @@ ImagePtr HistoryGroupedMedia::replyPreview() { return main()->replyPreview(); } +TextWithEntities HistoryGroupedMedia::getCaption() const { + return main()->getCaption(); +} + Storage::SharedMediaTypesMask HistoryGroupedMedia::sharedMediaTypes() const { return main()->sharedMediaTypes(); } diff --git a/Telegram/SourceFiles/history/history_media_grouped.h b/Telegram/SourceFiles/history/history_media_grouped.h index 1de3f76b79..bf9dfbc846 100644 --- a/Telegram/SourceFiles/history/history_media_grouped.h +++ b/Telegram/SourceFiles/history/history_media_grouped.h @@ -91,8 +91,9 @@ public: bool hasReplyPreview() const override; ImagePtr replyPreview() override; - + TextWithEntities getCaption() const override; Storage::SharedMediaTypesMask sharedMediaTypes() const override; + bool canBeGrouped() const override { return true; } diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 25e58c5a54..a2a84b2cd7 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -1608,6 +1608,7 @@ void HistoryMessage::setMedia(const MTPMessageMedia *media) { _textWidth = -1; _textHeight = 0; } + _history->recountGroupingAround(this); } void HistoryMessage::setText(const TextWithEntities &textWithEntities) {