diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index 6f6b57298..056f2a159 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -667,7 +667,8 @@ Widget::Widget( rpl::single(0), [=](int h) { updateControlsGeometry(); }, [=](FilterId id) { controller->setActiveChatsFilter(id); }, - Core::App().settings().chatFiltersHorizontalValue()); + Core::App().settings().chatFiltersHorizontalValue(), + true); _chatFilters->stackUnder(_scroll); _chatFilters->resizeToWidth(width()); updateControlsGeometry(); diff --git a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp index 66affaf5c..e29f90e89 100644 --- a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp +++ b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.cpp @@ -130,7 +130,8 @@ not_null AddChatFiltersTabsStrip( rpl::producer multiSelectHeightValue, Fn setAddedTopScrollSkip, Fn choose, - rpl::producer additionalToggleOn) { + rpl::producer additionalToggleOn, + bool trackActiveChatsFilter) { const auto window = Core::App().findWindow(parent); const auto controller = window ? window->sessionController() : nullptr; @@ -265,7 +266,21 @@ not_null AddChatFiltersTabsStrip( applyFilter(filter); } }(); - slider->sectionActivated() | rpl::start_with_next([=](int index) { + if (trackActiveChatsFilter) { + controller->activeChatsFilter( + ) | rpl::start_with_next([=](FilterId id) { + const auto &list = session->data().chatsFilters().list(); + for (auto i = 0; i < list.size(); ++i) { + if (list[i].id() == id) { + slider->setActiveSection(i); + scrollToIndex(i, anim::type::normal); + break; + } + } + }, slider->lifetime()); + } + slider->sectionActivated() | rpl::distinct_until_changed( + ) | rpl::start_with_next([=](int index) { const auto &filter = filterByIndex(index); state->lastFilterId = filter.id(); scrollToIndex(index, anim::type::normal); diff --git a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.h b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.h index 3a5c1ed59..806a2ee14 100644 --- a/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.h +++ b/Telegram/SourceFiles/ui/widgets/chat_filters_tabs_strip.h @@ -23,6 +23,7 @@ not_null AddChatFiltersTabsStrip( rpl::producer multiSelectHeightValue, Fn setAddedTopScrollSkip, Fn choose, - rpl::producer additionalToggleOn = rpl::single(true)); + rpl::producer additionalToggleOn = rpl::single(true), + bool trackActiveChatsFilter = false); } // namespace Ui