diff --git a/crates/workspace/src/status_bar.rs b/crates/workspace/src/status_bar.rs index 52c993d90179a4854cb62a9bb92c80901e8fee9c..304c6417baab6c6a9b4b6e26e8f685992c1f80db 100644 --- a/crates/workspace/src/status_bar.rs +++ b/crates/workspace/src/status_bar.rs @@ -1,6 +1,6 @@ -use crate::{ItemHandle, Pane, ToggleWorkspaceSidebar}; +use crate::{ItemHandle, MultiWorkspace, Pane, ToggleWorkspaceSidebar}; use gpui::{ - Action, AnyView, App, Context, Decorations, Entity, IntoElement, ParentElement, Render, Styled, + AnyView, App, Context, Decorations, Entity, IntoElement, ParentElement, Render, Styled, Subscription, Window, }; use std::any::TypeId; @@ -104,8 +104,12 @@ impl StatusBar { .tooltip(move |_, cx| { Tooltip::for_action("Open Threads Sidebar", &ToggleWorkspaceSidebar, cx) }) - .on_click(|_, window, cx| { - window.dispatch_action(ToggleWorkspaceSidebar.boxed_clone(), cx); + .on_click(move |_, window, cx| { + if let Some(multi_workspace) = window.root::().flatten() { + multi_workspace.update(cx, |multi_workspace, cx| { + multi_workspace.toggle_sidebar(window, cx); + }); + } }), ) .child(Divider::vertical().color(ui::DividerColor::Border)) diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index b65fae65568def7198931a167ba1e6c8982ae7a9..bd79918eb435dd05b5e4be4459a0e2e6972182ab 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -11079,6 +11079,7 @@ mod tests { assert!(workspace.right_dock().read(cx).is_open()); assert!(!panel.is_zoomed(window, cx)); assert!(!panel.read(cx).focus_handle(cx).contains_focused(window, cx)); + assert!(pane.read(cx).focus_handle(cx).contains_focused(window, cx)); }); // Close the dock @@ -11090,6 +11091,7 @@ mod tests { assert!(!workspace.right_dock().read(cx).is_open()); assert!(!panel.is_zoomed(window, cx)); assert!(!panel.read(cx).focus_handle(cx).contains_focused(window, cx)); + assert!(pane.read(cx).focus_handle(cx).contains_focused(window, cx)); }); // Open the dock