diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index ae7d9df157..5780baf182 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -7135,7 +7135,9 @@ void HistoryWidget::confirmDeleteSelected() { } void HistoryWidget::escape() { - if (_chooseForReport) { + if (_composeSearch) { + _composeSearch->hideAnimated(); + } else if (_chooseForReport) { controller()->clearChooseReportMessages(); } else if (_nonEmptySelection && _list) { clearSelected(); 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 1943b0bf0c..b221ac4ba1 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp @@ -255,6 +255,7 @@ public: [[nodiscard]] rpl::producer fromValue() const; [[nodiscard]] rpl::producer<> queryChanges() const; [[nodiscard]] rpl::producer<> closeRequests() const; + [[nodiscard]] rpl::producer<> cancelRequests() const; void setFrom(PeerData *peer); @@ -274,6 +275,7 @@ private: rpl::event_stream _searchRequests; rpl::event_stream<> _queryChanges; + rpl::event_stream<> _cancelRequests; }; TopBar::TopBar(not_null parent) @@ -318,7 +320,7 @@ TopBar::TopBar(not_null parent) }); _select->setCancelledCallback([=] { - + _cancelRequests.fire({}); }); } @@ -371,6 +373,10 @@ rpl::producer<> TopBar::closeRequests() const { return _cancel->clicks() | rpl::to_empty; } +rpl::producer<> TopBar::cancelRequests() const { + return _cancelRequests.events(); +} + rpl::producer TopBar::fromValue() const { return _from.value(); } @@ -783,6 +789,15 @@ ComposeSearch::Inner::Inner( hideAnimated(); }, _topBar->lifetime()); + _topBar->cancelRequests( + ) | rpl::start_with_next([=] { + if (!_list.container->isHidden()) { + Ui::Animations::HideWidgets({ _list.container.get() }); + } else { + hideAnimated(); + } + }, _topBar->lifetime()); + _apiSearch.newFounds( ) | rpl::start_with_next([=] { const auto &apiData = _apiSearch.messages(); @@ -859,7 +874,7 @@ ComposeSearch::Inner::Inner( Window::Show(_window).hideLayer(); _topBar->setFrom(from); }), - crl::guard(_bottomBar.get(), [=] { /*_filter->setFocus();*/ })); + crl::guard(_bottomBar.get(), [=] { setInnerFocus(); })); Window::Show(_window).showBox(std::move(box)); }, _bottomBar->lifetime());