Fix project search focus not toggling between query and results on ESC (#30613)
Before: https://github.com/user-attachments/assets/dc5b7ab3-b9bc-4aa3-9f0c-1694c41ec7e7 After: https://github.com/user-attachments/assets/8087004e-c1fd-4390-9f79-b667e8ba874b Release Notes: - Fixed project search focus not toggling between query and results on ESC
This commit is contained in:
parent
18e911002f
commit
01488c4f91
1 changed files with 34 additions and 0 deletions
|
@ -106,6 +106,40 @@ pub fn init(cx: &mut App) {
|
||||||
ProjectSearchView::search_in_new(workspace, action, window, cx)
|
ProjectSearchView::search_in_new(workspace, action, window, cx)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
register_workspace_action_for_present_search(
|
||||||
|
workspace,
|
||||||
|
|workspace, _: &menu::Cancel, window, cx| {
|
||||||
|
if let Some(project_search_bar) = workspace
|
||||||
|
.active_pane()
|
||||||
|
.read(cx)
|
||||||
|
.toolbar()
|
||||||
|
.read(cx)
|
||||||
|
.item_of_type::<ProjectSearchBar>()
|
||||||
|
{
|
||||||
|
project_search_bar.update(cx, |project_search_bar, cx| {
|
||||||
|
let search_is_focused = project_search_bar
|
||||||
|
.active_project_search
|
||||||
|
.as_ref()
|
||||||
|
.is_some_and(|search_view| {
|
||||||
|
search_view
|
||||||
|
.read(cx)
|
||||||
|
.query_editor
|
||||||
|
.read(cx)
|
||||||
|
.focus_handle(cx)
|
||||||
|
.is_focused(window)
|
||||||
|
});
|
||||||
|
if search_is_focused {
|
||||||
|
project_search_bar.move_focus_to_results(window, cx);
|
||||||
|
} else {
|
||||||
|
project_search_bar.focus_search(window, cx)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
cx.propagate();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// Both on present and dismissed search, we need to unconditionally handle those actions to focus from the editor.
|
// Both on present and dismissed search, we need to unconditionally handle those actions to focus from the editor.
|
||||||
workspace.register_action(move |workspace, action: &DeploySearch, window, cx| {
|
workspace.register_action(move |workspace, action: &DeploySearch, window, cx| {
|
||||||
if workspace.has_active_modal(window, cx) {
|
if workspace.has_active_modal(window, cx) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue