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() {
if (_chooseForReport) {
if (_composeSearch) {
_composeSearch->hideAnimated();
} else if (_chooseForReport) {
controller()->clearChooseReportMessages();
} else if (_nonEmptySelection && _list) {
clearSelected();

View file

@ -255,6 +255,7 @@ public:
[[nodiscard]] rpl::producer<PeerData*> 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<SearchRequest> _searchRequests;
rpl::event_stream<> _queryChanges;
rpl::event_stream<> _cancelRequests;
};
TopBar::TopBar(not_null<Ui::RpWidget*> parent)
@ -318,7 +320,7 @@ TopBar::TopBar(not_null<Ui::RpWidget*> 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<PeerData*> 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());