diff --git a/zed/assets/themes/_base.toml b/zed/assets/themes/_base.toml index 1fc3b3b0b2..787af98573 100644 --- a/zed/assets/themes/_base.toml +++ b/zed/assets/themes/_base.toml @@ -3,6 +3,7 @@ base = { family = "Inconsolata", size = 14 } [workspace] background = "$surface.0" +pane_divider = { width = 3, color = "$border.0" } [workspace.titlebar] border = { width = 1, bottom = true, color = "$surface.1" } diff --git a/zed/src/theme.rs b/zed/src/theme.rs index deddb4fe4a..4f882b2b16 100644 --- a/zed/src/theme.rs +++ b/zed/src/theme.rs @@ -6,6 +6,7 @@ use gpui::{ color::Color, elements::{ContainerStyle, LabelStyle}, fonts::{HighlightStyle, TextStyle}, + Border, }; use serde::Deserialize; use std::collections::HashMap; @@ -36,6 +37,7 @@ pub struct Workspace { pub titlebar: ContainerStyle, pub tab: Tab, pub active_tab: Tab, + pub pane_divider: Border, pub left_sidebar: Sidebar, pub right_sidebar: Sidebar, } diff --git a/zed/src/workspace.rs b/zed/src/workspace.rs index 4977cf4265..07cac2bc4e 100644 --- a/zed/src/workspace.rs +++ b/zed/src/workspace.rs @@ -972,7 +972,9 @@ impl View for Workspace { { content.add_child(Flexible::new(0.8, element).boxed()); } - content.add_child(Expanded::new(1.0, self.center.render()).boxed()); + content.add_child( + Expanded::new(1.0, self.center.render(&settings.theme)).boxed(), + ); if let Some(element) = self.right_sidebar.render_active_item(&settings, cx) { diff --git a/zed/src/workspace/pane_group.rs b/zed/src/workspace/pane_group.rs index d6bf992776..ce7a9c69d9 100644 --- a/zed/src/workspace/pane_group.rs +++ b/zed/src/workspace/pane_group.rs @@ -1,5 +1,6 @@ +use crate::theme::Theme; use anyhow::{anyhow, Result}; -use gpui::{color::Color, elements::*, Axis, Border}; +use gpui::{elements::*, Axis}; #[derive(Clone, Debug, Eq, PartialEq)] pub struct PaneGroup { @@ -44,8 +45,8 @@ impl PaneGroup { } } - pub fn render<'a>(&self) -> ElementBox { - self.root.render() + pub fn render<'a>(&self, theme: &Theme) -> ElementBox { + self.root.render(theme) } } @@ -73,10 +74,10 @@ impl Member { Member::Axis(PaneAxis { axis, members }) } - pub fn render<'a>(&self) -> ElementBox { + pub fn render<'a>(&self, theme: &Theme) -> ElementBox { match self { Member::Pane(view_id) => ChildView::new(*view_id).boxed(), - Member::Axis(axis) => axis.render(), + Member::Axis(axis) => axis.render(theme), } } } @@ -164,13 +165,17 @@ impl PaneAxis { } } - fn render<'a>(&self) -> ElementBox { + fn render<'a>(&self, theme: &Theme) -> ElementBox { let last_member_ix = self.members.len() - 1; Flex::new(self.axis) .with_children(self.members.iter().enumerate().map(|(ix, member)| { - let mut member = member.render(); + let mut member = member.render(theme); if ix < last_member_ix { - let mut border = Border::new(border_width(), border_color()); + let mut border = theme.workspace.pane_divider; + border.left = false; + border.right = false; + border.top = false; + border.bottom = false; match self.axis { Axis::Vertical => border.bottom = true, Axis::Horizontal => border.right = true, @@ -377,13 +382,3 @@ mod tests { // Ok(()) // } } - -#[inline(always)] -fn border_width() -> f32 { - 2.0 -} - -#[inline(always)] -fn border_color() -> Color { - Color::new(0xdb, 0xdb, 0xdc, 0xff) -}