mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-06 23:24:01 +02:00
Fixed text loss when editing media content is canceled.
This commit is contained in:
parent
5c097887ef
commit
69bc595e31
2 changed files with 17 additions and 7 deletions
|
@ -128,13 +128,16 @@ public:
|
||||||
// For edit media in history_message.
|
// For edit media in history_message.
|
||||||
virtual void returnSavedMedia() {};
|
virtual void returnSavedMedia() {};
|
||||||
void savePreviousMedia() {
|
void savePreviousMedia() {
|
||||||
_savedMedia = _media->clone(this);
|
_savedLocalEditMediaData = {
|
||||||
|
originalText(),
|
||||||
|
_media->clone(this),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
[[nodiscard]] bool isEditingMedia() const {
|
[[nodiscard]] bool isEditingMedia() const {
|
||||||
return _savedMedia != nullptr;
|
return _savedLocalEditMediaData.media != nullptr;
|
||||||
}
|
}
|
||||||
void clearSavedMedia() {
|
void clearSavedMedia() {
|
||||||
_savedMedia = nullptr;
|
_savedLocalEditMediaData = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Zero result means this message is not self-destructing right now.
|
// Zero result means this message is not self-destructing right now.
|
||||||
|
@ -364,7 +367,12 @@ protected:
|
||||||
int _textWidth = -1;
|
int _textWidth = -1;
|
||||||
int _textHeight = 0;
|
int _textHeight = 0;
|
||||||
|
|
||||||
std::unique_ptr<Data::Media> _savedMedia;
|
struct SavedMediaData {
|
||||||
|
TextWithEntities text;
|
||||||
|
std::unique_ptr<Data::Media> media;
|
||||||
|
};
|
||||||
|
|
||||||
|
SavedMediaData _savedLocalEditMediaData;
|
||||||
std::unique_ptr<Data::Media> _media;
|
std::unique_ptr<Data::Media> _media;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -902,11 +902,13 @@ void HistoryMessage::refreshSentMedia(const MTPMessageMedia *media) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistoryMessage::returnSavedMedia() {
|
void HistoryMessage::returnSavedMedia() {
|
||||||
if (!_savedMedia) {
|
if (!isEditingMedia()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto wasGrouped = history()->owner().groups().isGrouped(this);
|
const auto wasGrouped = history()->owner().groups().isGrouped(this);
|
||||||
_media = std::move(_savedMedia);
|
_media = std::move(_savedLocalEditMediaData.media);
|
||||||
|
setText(_savedLocalEditMediaData.text);
|
||||||
|
clearSavedMedia();
|
||||||
if (wasGrouped) {
|
if (wasGrouped) {
|
||||||
history()->owner().groups().refreshMessage(this, true);
|
history()->owner().groups().refreshMessage(this, true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1406,7 +1408,7 @@ std::unique_ptr<HistoryView::Element> HistoryMessage::createView(
|
||||||
|
|
||||||
HistoryMessage::~HistoryMessage() {
|
HistoryMessage::~HistoryMessage() {
|
||||||
_media.reset();
|
_media.reset();
|
||||||
_savedMedia.reset();
|
clearSavedMedia();
|
||||||
if (auto reply = Get<HistoryMessageReply>()) {
|
if (auto reply = Get<HistoryMessageReply>()) {
|
||||||
reply->clearData(this);
|
reply->clearData(this);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue