diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp index 8d18988ac..09bf7c983 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp @@ -1783,11 +1783,13 @@ void RepliesWidget::finishSending() { void RepliesWidget::showAtPosition( Data::MessagePosition position, - FullMsgId originItemId) { + FullMsgId originItemId, + anim::type animated) { _lastShownAt = position.fullId; + controller()->setActiveChatEntry(activeChat()); _inner->showAtPosition( position, - anim::type::normal, + animated, _cornerButtons.doneJumpFrom(position.fullId, originItemId)); } @@ -1802,16 +1804,13 @@ not_null RepliesWidget::history() const { } Dialogs::RowDescriptor RepliesWidget::activeChat() const { + const auto messageId = _lastShownAt + ? _lastShownAt + : FullMsgId(_history->peer->id, ShowAtUnreadMsgId); if (_topic) { - return { - _topic, - FullMsgId(_history->peer->id, ShowAtUnreadMsgId), - }; + return { _topic, messageId }; } - return { - _history, - FullMsgId(_history->peer->id, ShowAtUnreadMsgId) - }; + return { _history, messageId }; } bool RepliesWidget::preventsClose(Fn &&continueCallback) const { @@ -2019,10 +2018,10 @@ void RepliesWidget::restoreState(not_null memento) { _cornerButtons.setReplyReturns(memento->replyReturns()); _inner->restoreState(memento->list()); if (const auto highlight = memento->getHighlightId()) { - _inner->showAtPosition(Data::MessagePosition{ + showAtPosition(Data::MessagePosition{ .fullId = FullMsgId(_history->peer->id, highlight), .date = TimeId(0), - }, anim::type::instant); + }, {}, anim::type::instant); } } diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.h b/Telegram/SourceFiles/history/view/history_view_replies_section.h index 0b791757d..71759a9ef 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.h +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.h @@ -198,7 +198,8 @@ private: void showAtEnd(); void showAtPosition( Data::MessagePosition position, - FullMsgId originItemId = {}); + FullMsgId originItemId = {}, + anim::type animated = anim::type::normal); void finishSending(); void setupComposeControls();