Re-run editor search on edits and field focus

This commit is contained in:
John Preston
2026-07-07 09:32:13 +04:00
parent 210e47d942
commit 21def3473a
7 changed files with 38 additions and 0 deletions
@@ -427,6 +427,7 @@ public:
void setQueryChangedCallback(Fn<void(const QString &query)> callback);
void setSubmittedCallback(Fn<void(Qt::KeyboardModifiers)> callback);
void setCancelledCallback(Fn<void()> callback);
void setFocusedChangedCallback(Fn<void(bool focused)> callback);
void addItemInBunch(std::unique_ptr<Item> item);
void finishItemsBunch(AddItemWay way);
@@ -504,6 +505,7 @@ private:
Fn<void(const QString &query)> _queryChangedCallback;
Fn<void(Qt::KeyboardModifiers)> _submittedCallback;
Fn<void()> _cancelledCallback;
Fn<void(bool focused)> _focusedChangedCallback;
Fn<void(uint64 itemId)> _itemRemovedCallback;
Fn<void(int heightDelta)> _resizedCallback;
@@ -582,6 +584,10 @@ void MultiSelect::setCancelledCallback(Fn<void()> callback) {
_inner->setCancelledCallback(std::move(callback));
}
void MultiSelect::setFocusedChangedCallback(Fn<void(bool focused)> callback) {
_inner->setFocusedChangedCallback(std::move(callback));
}
void MultiSelect::setResizedCallback(Fn<void()> callback) {
_resizedCallback = std::move(callback);
}
@@ -662,6 +668,12 @@ MultiSelect::Inner::Inner(
) | rpl::filter(rpl::mappers::_1) | rpl::on_next([=] {
fieldFocused();
}, _field->lifetime());
_field->focusedChanges(
) | rpl::on_next([=](bool focused) {
if (_focusedChangedCallback) {
_focusedChangedCallback(focused);
}
}, _field->lifetime());
_field->changes(
) | rpl::on_next([=] {
queryChanged();
@@ -730,6 +742,11 @@ void MultiSelect::Inner::setCancelledCallback(Fn<void()> callback) {
_cancelledCallback = std::move(callback);
}
void MultiSelect::Inner::setFocusedChangedCallback(
Fn<void(bool focused)> callback) {
_focusedChangedCallback = std::move(callback);
}
void MultiSelect::Inner::updateFieldGeometry() {
auto fieldFinalWidth = _fieldWidth;
if (_cancel->toggled()) {