diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 1310c283c4..64ef662fcd 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -128,13 +128,16 @@ public: // For edit media in history_message. virtual void returnSavedMedia() {}; void savePreviousMedia() { - _savedMedia = _media->clone(this); + _savedLocalEditMediaData = { + originalText(), + _media->clone(this), + }; } [[nodiscard]] bool isEditingMedia() const { - return _savedMedia != nullptr; + return _savedLocalEditMediaData.media != nullptr; } void clearSavedMedia() { - _savedMedia = nullptr; + _savedLocalEditMediaData = {}; } // Zero result means this message is not self-destructing right now. @@ -364,7 +367,12 @@ protected: int _textWidth = -1; int _textHeight = 0; - std::unique_ptr _savedMedia; + struct SavedMediaData { + TextWithEntities text; + std::unique_ptr media; + }; + + SavedMediaData _savedLocalEditMediaData; std::unique_ptr _media; private: diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 9a6d8fa08a..4bb7fc8b34 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -902,11 +902,13 @@ void HistoryMessage::refreshSentMedia(const MTPMessageMedia *media) { } void HistoryMessage::returnSavedMedia() { - if (!_savedMedia) { + if (!isEditingMedia()) { return; } const auto wasGrouped = history()->owner().groups().isGrouped(this); - _media = std::move(_savedMedia); + _media = std::move(_savedLocalEditMediaData.media); + setText(_savedLocalEditMediaData.text); + clearSavedMedia(); if (wasGrouped) { history()->owner().groups().refreshMessage(this, true); } else { @@ -1406,7 +1408,7 @@ std::unique_ptr HistoryMessage::createView( HistoryMessage::~HistoryMessage() { _media.reset(); - _savedMedia.reset(); + clearSavedMedia(); if (auto reply = Get()) { reply->clearData(this); }