Improve styling of bottom and right docks

This commit is contained in:
Antonio Scandurra 2023-05-23 09:02:45 +02:00
parent 208ff2fba7
commit 19b817e48a
3 changed files with 25 additions and 9 deletions

View file

@ -402,9 +402,9 @@ pub struct StatusBarLspStatus {
#[derive(Deserialize, Default)]
pub struct Dock {
pub initial_size: f32,
#[serde(flatten)]
pub container: ContainerStyle,
pub left: ContainerStyle,
pub bottom: ContainerStyle,
pub right: ContainerStyle,
}
#[derive(Clone, Deserialize, Default)]

View file

@ -372,11 +372,10 @@ impl Dock {
pub fn render_placeholder(&self, cx: &WindowContext) -> AnyElement<Workspace> {
if let Some(active_entry) = self.active_entry() {
let style = &settings::get::<ThemeSettings>(cx).theme.workspace.dock;
Empty::new()
.into_any()
.contained()
.with_style(style.container)
.with_style(self.style(cx))
.resizable(
self.position.to_resize_handle_side(),
active_entry.panel.size(cx),
@ -387,6 +386,16 @@ impl Dock {
Empty::new().into_any()
}
}
fn style(&self, cx: &WindowContext) -> ContainerStyle {
let theme = &settings::get::<ThemeSettings>(cx).theme;
let style = match self.position {
DockPosition::Left => theme.workspace.dock.left,
DockPosition::Bottom => theme.workspace.dock.bottom,
DockPosition::Right => theme.workspace.dock.right,
};
style
}
}
impl Entity for Dock {
@ -400,10 +409,10 @@ impl View for Dock {
fn render(&mut self, cx: &mut ViewContext<Self>) -> AnyElement<Self> {
if let Some(active_entry) = self.active_entry() {
let style = &settings::get::<ThemeSettings>(cx).theme.workspace.dock;
let style = self.style(cx);
ChildView::new(active_entry.panel.as_any(), cx)
.contained()
.with_style(style.container)
.with_style(style)
.resizable(
self.position.to_resize_handle_side(),
active_entry.panel.size(cx),

View file

@ -128,8 +128,15 @@ export default function workspace(colorScheme: ColorScheme) {
border: border(colorScheme.highest, { overlay: true }),
},
dock: {
initialSize: 240,
border: border(layer, { left: true, right: true }),
left: {
border: border(layer, { right: true }),
},
bottom: {
border: border(layer, { top: true }),
},
right: {
border: border(layer, { left: true }),
}
},
paneDivider: {
color: borderColor(layer),