@@ -406,6 +406,7 @@
"cmd-b": "workspace::ToggleLeftDock",
"cmd-r": "workspace::ToggleRightDock",
"cmd-j": "workspace::ToggleBottomDock",
+ "alt-cmd-y": "workspace::CloseAllDocks",
"cmd-shift-f": "workspace::NewSearch",
"cmd-k cmd-t": "theme_selector::Toggle",
"cmd-k cmd-s": "zed::OpenKeymap",
@@ -141,6 +141,7 @@ actions!(
ToggleLeftDock,
ToggleRightDock,
ToggleBottomDock,
+ CloseAllDocks,
]
);
@@ -281,6 +282,9 @@ pub fn init(app_state: Arc<AppState>, cx: &mut AppContext) {
cx.add_action(|workspace: &mut Workspace, _: &ToggleBottomDock, cx| {
workspace.toggle_dock(DockPosition::Bottom, cx);
});
+ cx.add_action(|workspace: &mut Workspace, _: &CloseAllDocks, cx| {
+ workspace.close_all_docks(cx);
+ });
cx.add_action(Workspace::activate_pane_at_index);
cx.add_action(|workspace: &mut Workspace, _: &ReopenClosedItem, cx| {
workspace.reopen_closed_item(cx).detach();
@@ -1670,6 +1674,20 @@ impl Workspace {
self.serialize_workspace(cx);
}
+ pub fn close_all_docks(&mut self, cx: &mut ViewContext<Self>) {
+ let docks = [&self.left_dock, &self.bottom_dock, &self.right_dock];
+
+ for dock in docks {
+ dock.update(cx, |dock, cx| {
+ dock.set_open(false, cx);
+ });
+ }
+
+ cx.focus_self();
+ cx.notify();
+ self.serialize_workspace(cx);
+ }
+
/// Transfer focus to the panel of the given type.
pub fn focus_panel<T: Panel>(&mut self, cx: &mut ViewContext<Self>) -> Option<ViewHandle<T>> {
self.focus_or_unfocus_panel::<T>(cx, |_, _| true)?
@@ -93,6 +93,7 @@ pub fn menus() -> Vec<Menu<'static>> {
MenuItem::action("Toggle Left Dock", workspace::ToggleLeftDock),
MenuItem::action("Toggle Right Dock", workspace::ToggleRightDock),
MenuItem::action("Toggle Bottom Dock", workspace::ToggleBottomDock),
+ MenuItem::action("Close All Docks", workspace::CloseAllDocks),
MenuItem::submenu(Menu {
name: "Editor Layout",
items: vec![