diff --git a/crates/workspace2/src/dock.rs b/crates/workspace2/src/dock.rs index 9a614bc92e..9fd4ace1c2 100644 --- a/crates/workspace2/src/dock.rs +++ b/crates/workspace2/src/dock.rs @@ -1,7 +1,8 @@ use crate::{status_bar::StatusItemView, Axis, Workspace}; use gpui::{ - div, Action, AnyView, AppContext, Div, Entity, EntityId, EventEmitter, FocusHandle, - ParentElement, Render, Styled, Subscription, View, ViewContext, WeakView, WindowContext, + div, px, Action, AnyView, AppContext, Component, Div, Entity, EntityId, EventEmitter, + FocusHandle, ParentElement, Render, Styled, Subscription, View, ViewContext, WeakView, + WindowContext, }; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -429,7 +430,14 @@ impl Render for Dock { fn render(&mut self, cx: &mut ViewContext) -> Self::Element { if let Some(entry) = self.visible_entry() { - div().size_full().child(entry.panel.to_any()) + let size = entry.panel.size(cx); + + div() + .map(|this| match self.position().axis() { + Axis::Horizontal => this.w(px(size)).h_full(), + Axis::Vertical => this.h(px(size)).w_full(), + }) + .child(entry.panel.to_any()) } else { div() } diff --git a/crates/workspace2/src/workspace2.rs b/crates/workspace2/src/workspace2.rs index 7137a273d5..272ffcf3cd 100644 --- a/crates/workspace2/src/workspace2.rs +++ b/crates/workspace2/src/workspace2.rs @@ -69,7 +69,8 @@ use std::{ }; use theme2::ActiveTheme; pub use toolbar::{ToolbarItemLocation, ToolbarItemView}; -use ui::{h_stack, Button, ButtonVariant, KeyBinding, Label, TextColor, TextTooltip}; +use ui::TextColor; +use ui::{h_stack, Button, ButtonVariant, KeyBinding, Label, TextTooltip}; use util::ResultExt; use uuid::Uuid; pub use workspace_settings::{AutosaveSetting, WorkspaceSettings}; @@ -3744,7 +3745,15 @@ impl Render for Workspace { .flex_row() .flex_1() .h_full() - .child(div().flex().flex_1().child(self.left_dock.clone())) + // Left Dock + .child( + div() + .flex() + .flex_none() + .overflow_hidden() + .child(self.left_dock.clone()), + ) + // Panes .child( div() .flex() @@ -3761,7 +3770,14 @@ impl Render for Workspace { )) .child(div().flex().flex_1().child(self.bottom_dock.clone())), ) - .child(div().flex().flex_1().child(self.right_dock.clone())), + // Right Dock + .child( + div() + .flex() + .flex_none() + .overflow_hidden() + .child(self.right_dock.clone()), + ), ), ) .child(self.status_bar.clone())