Added Escape hotkey to hide search messages in dialogs.

This commit is contained in:
23rd 2022-03-23 12:02:24 +03:00 committed by John Preston
parent 307894415f
commit 49d090bb4c
2 changed files with 20 additions and 3 deletions

View file

@ -7135,7 +7135,9 @@ void HistoryWidget::confirmDeleteSelected() {
} }
void HistoryWidget::escape() { void HistoryWidget::escape() {
if (_chooseForReport) { if (_composeSearch) {
_composeSearch->hideAnimated();
} else if (_chooseForReport) {
controller()->clearChooseReportMessages(); controller()->clearChooseReportMessages();
} else if (_nonEmptySelection && _list) { } else if (_nonEmptySelection && _list) {
clearSelected(); clearSelected();

View file

@ -255,6 +255,7 @@ public:
[[nodiscard]] rpl::producer<PeerData*> fromValue() const; [[nodiscard]] rpl::producer<PeerData*> fromValue() const;
[[nodiscard]] rpl::producer<> queryChanges() const; [[nodiscard]] rpl::producer<> queryChanges() const;
[[nodiscard]] rpl::producer<> closeRequests() const; [[nodiscard]] rpl::producer<> closeRequests() const;
[[nodiscard]] rpl::producer<> cancelRequests() const;
void setFrom(PeerData *peer); void setFrom(PeerData *peer);
@ -274,6 +275,7 @@ private:
rpl::event_stream<SearchRequest> _searchRequests; rpl::event_stream<SearchRequest> _searchRequests;
rpl::event_stream<> _queryChanges; rpl::event_stream<> _queryChanges;
rpl::event_stream<> _cancelRequests;
}; };
TopBar::TopBar(not_null<Ui::RpWidget*> parent) TopBar::TopBar(not_null<Ui::RpWidget*> parent)
@ -318,7 +320,7 @@ TopBar::TopBar(not_null<Ui::RpWidget*> parent)
}); });
_select->setCancelledCallback([=] { _select->setCancelledCallback([=] {
_cancelRequests.fire({});
}); });
} }
@ -371,6 +373,10 @@ rpl::producer<> TopBar::closeRequests() const {
return _cancel->clicks() | rpl::to_empty; return _cancel->clicks() | rpl::to_empty;
} }
rpl::producer<> TopBar::cancelRequests() const {
return _cancelRequests.events();
}
rpl::producer<PeerData*> TopBar::fromValue() const { rpl::producer<PeerData*> TopBar::fromValue() const {
return _from.value(); return _from.value();
} }
@ -783,6 +789,15 @@ ComposeSearch::Inner::Inner(
hideAnimated(); hideAnimated();
}, _topBar->lifetime()); }, _topBar->lifetime());
_topBar->cancelRequests(
) | rpl::start_with_next([=] {
if (!_list.container->isHidden()) {
Ui::Animations::HideWidgets({ _list.container.get() });
} else {
hideAnimated();
}
}, _topBar->lifetime());
_apiSearch.newFounds( _apiSearch.newFounds(
) | rpl::start_with_next([=] { ) | rpl::start_with_next([=] {
const auto &apiData = _apiSearch.messages(); const auto &apiData = _apiSearch.messages();
@ -859,7 +874,7 @@ ComposeSearch::Inner::Inner(
Window::Show(_window).hideLayer(); Window::Show(_window).hideLayer();
_topBar->setFrom(from); _topBar->setFrom(from);
}), }),
crl::guard(_bottomBar.get(), [=] { /*_filter->setFocus();*/ })); crl::guard(_bottomBar.get(), [=] { setInnerFocus(); }));
Window::Show(_window).showBox(std::move(box)); Window::Show(_window).showBox(std::move(box));
}, _bottomBar->lifetime()); }, _bottomBar->lifetime());