Fixed editing other messages when media is edited.

- Added new condition for skipping message in History::lastSentMessage.
 - Added reset of _savedMedia in HistoryMessage destructor.
This commit is contained in:
23rd 2019-04-01 09:54:48 +03:00 committed by John Preston
parent f3102573ea
commit 5554867553
2 changed files with 8 additions and 1 deletions

View File

@ -2607,6 +2607,10 @@ HistoryItem *History::lastSentMessage() const {
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &message : ranges::view::reverse(block->messages)) {
const auto item = message->data();
// Skip if message is editing media.
if (item->isEditingMedia()) {
continue;
}
// Skip if message is video message or sticker.
if (const auto media = item->media()) {
// Skip only if media is not webpage.

View File

@ -619,7 +619,8 @@ bool HistoryMessage::allowsEdit(TimeId now) const {
return canStopPoll()
&& !isTooOldForEdit(now)
&& (!_media || _media->allowsEdit())
&& !isUnsupportedMessage();
&& !isUnsupportedMessage()
&& !_isEditingMedia;
}
bool HistoryMessage::uploading() const {
@ -768,6 +769,7 @@ void HistoryMessage::returnSavedMedia() {
} else {
history()->owner().requestItemViewRefresh(this);
}
_isEditingMedia = false;
}
void HistoryMessage::setMedia(const MTPMessageMedia &media) {
@ -1166,6 +1168,7 @@ std::unique_ptr<HistoryView::Element> HistoryMessage::createView(
HistoryMessage::~HistoryMessage() {
_media.reset();
_savedMedia.reset();
if (auto reply = Get<HistoryMessageReply>()) {
reply->clearData(this);
}