Fix lost focus when navigating back in project search result (#22483)
Closes #22447 When navigate forward/back, the focus moves from the ProjectSearchView's result editor to the Pane, and then move to the ProjectSearchView, but the event `on_focus_in` not triggered for ProjectSearchView, causing the result editor to lose focus eventually.f6dabadaf7/crates/workspace/src/workspace.rs (L1372)
f6dabadaf7/crates/workspace/src/workspace.rs (L1385)
Considering that the navigation might be triggered again in the next frame, so use `on_next_frame` in `on_focus` event to move focus to result editor. Next frame: - the blur event triggered for result editor. - focus move from ProjectSearchView to result editor in `on_focus` event for ProjectSearchView - navigate again, focus moves from result editor to Pane then move back to ProjectSearchView - the focus not change during this frame, so no focus event happened for ProjectSearchView.  Release Notes: - Fix lost focus when navigate back in project search result Co-authored-by: Kirill Bulatov <kirill@zed.dev>
This commit is contained in:
parent
7ba2b258de
commit
6b16a5555e
1 changed files with 9 additions and 7 deletions
|
@ -785,14 +785,16 @@ impl ProjectSearchView {
|
|||
);
|
||||
|
||||
let focus_handle = cx.focus_handle();
|
||||
subscriptions.push(cx.on_focus_in(&focus_handle, window, |this, window, cx| {
|
||||
if this.focus_handle.is_focused(window) {
|
||||
if this.has_matches() {
|
||||
this.results_editor.focus_handle(cx).focus(window);
|
||||
} else {
|
||||
this.query_editor.focus_handle(cx).focus(window);
|
||||
subscriptions.push(cx.on_focus(&focus_handle, window, |_, window, cx| {
|
||||
cx.on_next_frame(window, |this, window, cx| {
|
||||
if this.focus_handle.is_focused(window) {
|
||||
if this.has_matches() {
|
||||
this.results_editor.focus_handle(cx).focus(window);
|
||||
} else {
|
||||
this.query_editor.focus_handle(cx).focus(window);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}));
|
||||
|
||||
let languages = project.read(cx).languages().clone();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue