Always open a new project find on `alt-cmd-shift-F`

Nathan Sobo created

Change summary

crates/find/src/project_find.rs | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)

Detailed changes

crates/find/src/project_find.rs 🔗

@@ -15,16 +15,18 @@ use std::{
 use util::ResultExt as _;
 use workspace::{Item, ItemHandle, ItemNavHistory, ItemView, Settings, Workspace};
 
-action!(Deploy);
+action!(Deploy, bool);
 action!(Search);
 action!(ToggleSearchOption, SearchOption);
 action!(ToggleFocus);
 
 pub fn init(cx: &mut MutableAppContext) {
     cx.add_bindings([
+        Binding::new("cmd-shift-F", ToggleFocus, Some("ProjectFindView")),
         Binding::new("cmd-shift-F", ToggleFocus, Some("ProjectFindView")),
         Binding::new("cmd-f", ToggleFocus, Some("ProjectFindView")),
-        Binding::new("cmd-shift-F", Deploy, Some("Workspace")),
+        Binding::new("cmd-shift-F", Deploy(true), Some("Workspace")),
+        Binding::new("cmd-alt-shift-F", Deploy(false), Some("Workspace")),
         Binding::new("enter", Search, Some("ProjectFindView")),
     ]);
     cx.add_action(ProjectFindView::deploy);
@@ -333,13 +335,19 @@ impl ItemView for ProjectFindView {
 }
 
 impl ProjectFindView {
-    fn deploy(workspace: &mut Workspace, _: &Deploy, cx: &mut ViewContext<Workspace>) {
-        if let Some(existing) = workspace.item_of_type::<ProjectFind>(cx) {
-            workspace.activate_item(&existing, cx);
-        } else {
-            let model = cx.add_model(|cx| ProjectFind::new(workspace.project().clone(), cx));
-            workspace.open_item(model, cx);
+    fn deploy(
+        workspace: &mut Workspace,
+        &Deploy(activate_existing): &Deploy,
+        cx: &mut ViewContext<Workspace>,
+    ) {
+        if activate_existing {
+            if let Some(existing) = workspace.item_of_type::<ProjectFind>(cx) {
+                workspace.activate_item(&existing, cx);
+                return;
+            }
         }
+        let model = cx.add_model(|cx| ProjectFind::new(workspace.project().clone(), cx));
+        workspace.open_item(model, cx);
     }
 
     fn search(&mut self, _: &Search, cx: &mut ViewContext<Self>) {