From 03c5e67047c2abf886c996bc9dbd3801b6cd2b6a Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 22 Mar 2022 20:34:30 +0300 Subject: [PATCH] Fixed focus of field in search messages in HistoryWidget. --- Telegram/SourceFiles/history/history_widget.cpp | 10 ++++++++-- .../view/controls/history_view_compose_search.cpp | 15 +++++++++++++++ .../view/controls/history_view_compose_search.h | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 18122f3a74..244e88cead 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -1721,7 +1721,9 @@ void HistoryWidget::setInnerFocus() { if (_scroll->isHidden()) { setFocus(); } else if (_list) { - if (_chooseTheme && _chooseTheme->shouldBeShown()) { + if (isSearching()) { + _composeSearch->setInnerFocus(); + } else if (_chooseTheme && _chooseTheme->shouldBeShown()) { _chooseTheme->setFocus(); } else if (_nonEmptySelection || (_list && _list->wasSelectedText()) @@ -4397,6 +4399,7 @@ void HistoryWidget::searchInChat() { _history); update(); + setInnerFocus(); _composeSearch->destroyRequests( ) | rpl::take( 1 @@ -4404,6 +4407,7 @@ void HistoryWidget::searchInChat() { _composeSearch = nullptr; update(); + setInnerFocus(); }, _composeSearch->lifetime()); } } @@ -7223,7 +7227,9 @@ void HistoryWidget::updateTopBarSelection() { updateControlsVisibility(); updateHistoryGeometry(); if (!Ui::isLayerShown() && !Core::App().passcodeLocked()) { - if (_nonEmptySelection + if (isSearching()) { + _composeSearch->setInnerFocus(); + } else if (_nonEmptySelection || (_list && _list->wasSelectedText()) || isRecording() || isBotStart() diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp index 675344e3bb..5c3402b268 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp @@ -247,6 +247,8 @@ class TopBar final : public Ui::RpWidget { public: TopBar(not_null parent); + void setInnerFocus(); + [[nodiscard]] PeerData *from() const; [[nodiscard]] rpl::producer searchRequests() const; @@ -318,6 +320,10 @@ TopBar::TopBar(not_null parent) }); } +void TopBar::setInnerFocus() { + _select->setInnerFocus(); +} + void TopBar::clearItems() { _select->setItemRemovedCallback(nullptr); @@ -694,6 +700,7 @@ public: ~Inner(); void hideAnimated(); + void setInnerFocus(); [[nodiscard]] rpl::producer<> destroyRequests() const; [[nodiscard]] rpl::lifetime &lifetime(); @@ -863,6 +870,10 @@ ComposeSearch::Inner::Inner( })); } +void ComposeSearch::Inner::setInnerFocus() { + _topBar->setInnerFocus(); +} + void ComposeSearch::Inner::showAnimated() { // Don't animate bottom bar. _bottomBar->show(); @@ -907,6 +918,10 @@ void ComposeSearch::hideAnimated() { _inner->hideAnimated(); } +void ComposeSearch::setInnerFocus() { + _inner->setInnerFocus(); +} + rpl::producer<> ComposeSearch::destroyRequests() const { return _inner->destroyRequests(); } diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.h b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.h index 840feccc83..53b2ca7900 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.h @@ -28,6 +28,7 @@ public: ~ComposeSearch(); void hideAnimated(); + void setInnerFocus(); [[nodiscard]] rpl::producer<> destroyRequests() const;