Detailed changes
@@ -583,7 +583,7 @@
"ctrl-n": "workspace::NewFile",
"shift-new": "workspace::NewWindow",
"ctrl-shift-n": "workspace::NewWindow",
- "ctrl-`": "terminal_panel::ToggleFocus",
+ "ctrl-`": "terminal_panel::Toggle",
"f10": ["app_menu::OpenApplicationMenu", "Zed"],
"alt-1": ["workspace::ActivatePane", 0],
"alt-2": ["workspace::ActivatePane", 1],
@@ -649,7 +649,7 @@
"alt-shift-enter": "toast::RunAction",
"cmd-shift-s": "workspace::SaveAs",
"cmd-shift-n": "workspace::NewWindow",
- "ctrl-`": "terminal_panel::ToggleFocus",
+ "ctrl-`": "terminal_panel::Toggle",
"cmd-1": ["workspace::ActivatePane", 0],
"cmd-2": ["workspace::ActivatePane", 1],
"cmd-3": ["workspace::ActivatePane", 2],
@@ -599,7 +599,7 @@
"ctrl-n": "workspace::NewFile",
"shift-new": "workspace::NewWindow",
"ctrl-shift-n": "workspace::NewWindow",
- "ctrl-`": "terminal_panel::ToggleFocus",
+ "ctrl-`": "terminal_panel::Toggle",
"f10": ["app_menu::OpenApplicationMenu", "Zed"],
"alt-1": ["workspace::ActivatePane", 0],
"alt-2": ["workspace::ActivatePane", 1],
@@ -125,7 +125,7 @@
{
"context": "Workspace || Editor",
"bindings": {
- "alt-f12": "terminal_panel::ToggleFocus",
+ "alt-f12": "terminal_panel::Toggle",
"ctrl-shift-k": "git::Push"
}
},
@@ -127,7 +127,7 @@
{
"context": "Workspace || Editor",
"bindings": {
- "alt-f12": "terminal_panel::ToggleFocus",
+ "alt-f12": "terminal_panel::Toggle",
"cmd-shift-k": "git::Push"
}
},
@@ -49,6 +49,8 @@ const TERMINAL_PANEL_KEY: &str = "TerminalPanel";
actions!(
terminal_panel,
[
+ /// Toggles the terminal panel.
+ Toggle,
/// Toggles focus on the terminal panel.
ToggleFocus
]
@@ -64,6 +66,13 @@ pub fn init(cx: &mut App) {
workspace.toggle_panel_focus::<TerminalPanel>(window, cx);
}
});
+ workspace.register_action(|workspace, _: &Toggle, window, cx| {
+ if is_enabled_in_workspace(workspace, cx) {
+ if !workspace.toggle_panel_focus::<TerminalPanel>(window, cx) {
+ workspace.close_panel::<TerminalPanel>(window, cx);
+ }
+ }
+ });
},
)
.detach();
@@ -1265,8 +1265,8 @@ fn generate_commands(_: &App) -> Vec<VimCommand> {
VimCommand::str(("L", "explore"), "project_panel::ToggleFocus"),
VimCommand::str(("S", "explore"), "project_panel::ToggleFocus"),
VimCommand::str(("Ve", "xplore"), "project_panel::ToggleFocus"),
- VimCommand::str(("te", "rm"), "terminal_panel::ToggleFocus"),
- VimCommand::str(("T", "erm"), "terminal_panel::ToggleFocus"),
+ VimCommand::str(("te", "rm"), "terminal_panel::Toggle"),
+ VimCommand::str(("T", "erm"), "terminal_panel::Toggle"),
VimCommand::str(("C", "ollab"), "collab_panel::ToggleFocus"),
VimCommand::str(("Ch", "at"), "chat_panel::ToggleFocus"),
VimCommand::str(("No", "tifications"), "notification_panel::ToggleFocus"),
@@ -3093,6 +3093,16 @@ impl Workspace {
}
}
+ pub fn close_panel<T: Panel>(&self, window: &mut Window, cx: &mut Context<Self>) {
+ for dock in self.all_docks().iter() {
+ dock.update(cx, |dock, cx| {
+ if dock.panel::<T>().is_some() {
+ dock.set_open(false, window, cx)
+ }
+ })
+ }
+ }
+
pub fn panel<T: Panel>(&self, cx: &App) -> Option<Entity<T>> {
self.all_docks()
.iter()