diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index 006c13a12..57296a86e 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -426,6 +426,9 @@ void InnerWidget::changeOpenedForum(ChannelData *forum) { stopReorderPinned(); clearSelection(); + if (forum) { + saveChatsFilterScrollState(_filterId); + } _filterId = forum ? 0 : _controller->activeChatsFilterCurrent(); @@ -450,6 +453,10 @@ void InnerWidget::changeOpenedForum(ChannelData *forum) { if (_loadMoreCallback) { _loadMoreCallback(); } + + if (!forum) { + restoreChatsFilterScrollState(_filterId); + } } void InnerWidget::paintEvent(QPaintEvent *e) { @@ -2971,7 +2978,7 @@ void InnerWidget::switchToFilter(FilterId filterId) { _mustScrollTo.fire({ 0, 0 }); return; } - _chatsFilterScrollStates[_filterId] = -pos().y(); + saveChatsFilterScrollState(_filterId); if (_openedFolder) { _filterId = filterId; } else { @@ -2982,18 +2989,26 @@ void InnerWidget::switchToFilter(FilterId filterId) { } refreshEmptyLabel(); { - const auto it = _chatsFilterScrollStates.find(filterId); - if (it != end(_chatsFilterScrollStates)) { - const auto skip = found - // Don't save a scroll state for very flexible chat filters. - && (filterIt->flags() & (Data::ChatFilter::Flag::NoRead)); - if (!skip) { - _mustScrollTo.fire({ it->second, -1 }); - } + const auto skip = found + // Don't save a scroll state for very flexible chat filters. + && (filterIt->flags() & (Data::ChatFilter::Flag::NoRead)); + if (!skip) { + restoreChatsFilterScrollState(filterId); } } } +void InnerWidget::saveChatsFilterScrollState(FilterId filterId) { + _chatsFilterScrollStates[filterId] = -pos().y(); +} + +void InnerWidget::restoreChatsFilterScrollState(FilterId filterId) { + const auto it = _chatsFilterScrollStates.find(filterId); + if (it != end(_chatsFilterScrollStates)) { + _mustScrollTo.fire({ it->second, -1 }); + } +} + bool InnerWidget::chooseHashtag() { if (_state != WidgetState::Filtered) { return false; diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h index 228c1c8c6..c20c789d1 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h @@ -357,6 +357,9 @@ private: void handleChatListEntryRefreshes(); void moveCancelSearchButtons(); + void saveChatsFilterScrollState(FilterId filterId); + void restoreChatsFilterScrollState(FilterId filterId); + const not_null _controller; FilterId _filterId = 0; diff --git a/Telegram/SourceFiles/history/history_item_text.cpp b/Telegram/SourceFiles/history/history_item_text.cpp index 5f35f2608..c994edcee 100644 --- a/Telegram/SourceFiles/history/history_item_text.cpp +++ b/Telegram/SourceFiles/history/history_item_text.cpp @@ -17,8 +17,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" TextForMimeData HistoryItemText(not_null item) { - const auto media = item->media(); - auto textResult = item->clipboardText(); auto logEntryOriginalResult = [&] { const auto entry = item->Get();