Change summary
crates/search2/src/project_search.rs | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
Detailed changes
@@ -1224,6 +1224,14 @@ impl ProjectSearchView {
cx.theme().colors().border
}
}
+ fn move_focus_to_results(&mut self, cx: &mut ViewContext<Self>) {
+ if !self.results_editor.focus_handle(cx).is_focused(cx)
+ && !self.model.read(cx).match_ranges.is_empty()
+ {
+ cx.stop_propagation();
+ return self.focus_results_editor(cx);
+ }
+ }
}
impl Default for ProjectSearchBar {
@@ -1398,6 +1406,15 @@ impl ProjectSearchBar {
}
}
+ fn move_focus_to_results(&self, cx: &mut ViewContext<Self>) {
+ if let Some(search_view) = self.active_project_search.as_ref() {
+ search_view.update(cx, |search_view, cx| {
+ search_view.move_focus_to_results(cx);
+ });
+ cx.notify();
+ }
+ }
+
fn activate_search_mode(&self, mode: SearchMode, cx: &mut ViewContext<Self>) {
// Update Current Mode
if let Some(search_view) = self.active_project_search.as_ref() {
@@ -1754,6 +1771,7 @@ impl Render for ProjectSearchBar {
.key_context(key_context)
.flex_grow()
.gap_2()
+ .on_action(cx.listener(|this, _: &ToggleFocus, cx| this.move_focus_to_results(cx)))
.on_action(cx.listener(|this, _: &ToggleFilters, cx| {
this.toggle_filters(cx);
}))