diff --git a/crates/workspace2/src/workspace2.rs b/crates/workspace2/src/workspace2.rs index 617b5c51bf..8cb8c3dc9a 100644 --- a/crates/workspace2/src/workspace2.rs +++ b/crates/workspace2/src/workspace2.rs @@ -3534,6 +3534,8 @@ impl Render for Workspace { ) }; + let theme = cx.theme().clone(); + let colors = theme.colors(); cx.set_rem_size(ui_font_size); self.actions(div(), cx) @@ -3546,10 +3548,10 @@ impl Render for Workspace { .gap_0() .justify_start() .items_start() - .text_color(cx.theme().colors().text) - .bg(cx.theme().colors().background) + .text_color(colors.text) + .bg(colors.background) .border() - .border_color(cx.theme().colors().border) + .border_color(colors.border) .children(self.titlebar_item.clone()) .child( div() @@ -3562,7 +3564,7 @@ impl Render for Workspace { .overflow_hidden() .border_t() .border_b() - .border_color(cx.theme().colors().border) + .border_color(colors.border) .child( canvas(cx.listener(|workspace, bounds, _| { workspace.bounds = *bounds; @@ -3601,13 +3603,15 @@ impl Render for Workspace { .flex_row() .h_full() // Left Dock - .child( - div() - .flex() - .flex_none() - .overflow_hidden() - .child(self.left_dock.clone()), - ) + .children(self.zoomed_position.ne(&Some(DockPosition::Left)).then( + || { + div() + .flex() + .flex_none() + .overflow_hidden() + .child(self.left_dock.clone()) + }, + )) // Panes .child( div() @@ -3615,29 +3619,52 @@ impl Render for Workspace { .flex_col() .flex_1() .overflow_hidden() - .child({ - self.center.render( - &self.project, - &self.follower_states, - self.active_call(), - &self.active_pane, - self.zoomed.as_ref(), - &self.app_state, - cx, - ) - }) - .child(self.bottom_dock.clone()), + .child(self.center.render( + &self.project, + &self.follower_states, + self.active_call(), + &self.active_pane, + self.zoomed.as_ref(), + &self.app_state, + cx, + )) + .children( + self.zoomed_position + .ne(&Some(DockPosition::Bottom)) + .then(|| self.bottom_dock.clone()), + ), ) // Right Dock - .child( - div() - .flex() - .flex_none() - .overflow_hidden() - .child(self.right_dock.clone()), - ), + .children(self.zoomed_position.ne(&Some(DockPosition::Right)).then( + || { + div() + .flex() + .flex_none() + .overflow_hidden() + .child(self.right_dock.clone()) + }, + )), ) - .children(self.render_notifications(cx)), + .children(self.render_notifications(cx)) + .children(self.zoomed.as_ref().and_then(|view| { + let zoomed_view = view.upgrade()?; + let div = div() + .z_index(1) + .absolute() + .overflow_hidden() + .border_color(colors.border) + .bg(colors.background) + .child(zoomed_view) + .inset_0() + .shadow_lg(); + + Some(match self.zoomed_position { + Some(DockPosition::Left) => div.right_2().border_r(), + Some(DockPosition::Right) => div.left_2().border_l(), + Some(DockPosition::Bottom) => div.top_2().border_t(), + None => div.top_2().bottom_2().left_2().right_2().border(), + }) + })), ) .child(self.status_bar.clone()) }