Fixed focus of field in search messages in HistoryWidget.

This commit is contained in:
23rd 2022-03-22 20:34:30 +03:00 committed by John Preston
parent df38dde296
commit 03c5e67047
3 changed files with 24 additions and 2 deletions

View File

@ -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()

View File

@ -247,6 +247,8 @@ class TopBar final : public Ui::RpWidget {
public:
TopBar(not_null<Ui::RpWidget*> parent);
void setInnerFocus();
[[nodiscard]] PeerData *from() const;
[[nodiscard]] rpl::producer<SearchRequest> searchRequests() const;
@ -318,6 +320,10 @@ TopBar::TopBar(not_null<Ui::RpWidget*> 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();
}

View File

@ -28,6 +28,7 @@ public:
~ComposeSearch();
void hideAnimated();
void setInnerFocus();
[[nodiscard]] rpl::producer<> destroyRequests() const;