From f7a354bfd181b3555fd79cb52c0e47ff491f3bdd Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 18 Jul 2017 22:00:33 +0300 Subject: [PATCH] Display "edited" mark on channel signed messages. --- Telegram/SourceFiles/history/history_item.h | 4 +-- .../history/history_media_types.cpp | 2 +- .../SourceFiles/history/history_message.cpp | 29 ++++++++++++------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 2da40803a..2e3dc2455 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -119,14 +119,14 @@ struct HistoryMessageViews : public RuntimeComponent { }; struct HistoryMessageSigned : public RuntimeComponent { - void create(UserData *from, const QDateTime &date); + void create(UserData *from, const QString &date); int maxWidth() const; Text _signature; }; struct HistoryMessageEdited : public RuntimeComponent { - void create(const QDateTime &editDate, const QDateTime &date); + void create(const QDateTime &editDate, const QString &date); int maxWidth() const; QDateTime _editDate; diff --git a/Telegram/SourceFiles/history/history_media_types.cpp b/Telegram/SourceFiles/history/history_media_types.cpp index c16361e7d..366723fea 100644 --- a/Telegram/SourceFiles/history/history_media_types.cpp +++ b/Telegram/SourceFiles/history/history_media_types.cpp @@ -1137,7 +1137,7 @@ void HistoryDocument::initDimensions() { if (thumbed) { _minh = st::msgFileThumbPadding.top() + st::msgFileThumbSize + st::msgFileThumbPadding.bottom(); - if (!captioned && _parent->Has()) { + if (!captioned && (_parent->Has() || _parent->Has())) { _minh += st::msgDateFont->height - st::msgDateDelta.y(); } } else { diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index b91e8c735..e1418941b 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -344,8 +344,8 @@ void HistoryMessageVia::resize(int32 availw) const { } } -void HistoryMessageSigned::create(UserData *from, const QDateTime &date) { - auto time = qsl(", ") + date.toString(cTimeFormat()); +void HistoryMessageSigned::create(UserData *from, const QString &date) { + auto time = qsl(", ") + date; auto name = App::peerName(from); auto timew = st::msgDateFont->width(time); auto namew = st::msgDateFont->width(name); @@ -359,11 +359,9 @@ int HistoryMessageSigned::maxWidth() const { return _signature.maxWidth(); } -void HistoryMessageEdited::create(const QDateTime &editDate, const QDateTime &date) { +void HistoryMessageEdited::create(const QDateTime &editDate, const QString &date) { _editDate = editDate; - - auto time = date.toString(cTimeFormat()); - _edited.setText(st::msgDateTextStyle, lang(lng_edited) + ' ' + time, _textNameOptions); + _edited.setText(st::msgDateTextStyle, lang(lng_edited) + ' ' + date, _textNameOptions); } int HistoryMessageEdited::maxWidth() const { @@ -865,11 +863,13 @@ void HistoryMessage::createComponents(const CreateConfig &config) { if (auto views = Get()) { views->_views = config.viewsCount; } - if (auto msgsigned = Get()) { - msgsigned->create(_from->asUser(), date); - } if (auto edited = Get()) { - edited->create(config.editDate, date); + edited->create(config.editDate, date.toString(cTimeFormat())); + if (auto msgsigned = Get()) { + msgsigned->create(_from->asUser(), edited->_edited.originalText()); + } + } else if (auto msgsigned = Get()) { + msgsigned->create(_from->asUser(), date.toString(cTimeFormat())); } if (auto forwarded = Get()) { forwarded->_originalDate = config.originalDate; @@ -1174,9 +1174,16 @@ void HistoryMessage::applyEdition(const MTPDmessage &message) { if (!Has()) { AddComponents(HistoryMessageEdited::Bit()); } - Get()->create(::date(message.vedit_date), date); + auto edited = Get(); + edited->create(::date(message.vedit_date), date.toString(cTimeFormat())); + if (auto msgsigned = Get()) { + msgsigned->create(_from->asUser(), edited->_edited.originalText()); + } } else if (Has()) { RemoveComponents(HistoryMessageEdited::Bit()); + if (auto msgsigned = Get()) { + msgsigned->create(_from->asUser(), date.toString(cTimeFormat())); + } } initTime(); }