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

This commit is contained in:
Nathan Sobo
2022-02-25 19:48:43 -07:00
parent 60710fa5d5
commit f6b7cbd5cf
+16 -8
View File
@@ -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>) {