Make pane divider stylable in theme
Co-Authored-By: Nate Butler <nate@zed.dev>
This commit is contained in:
parent
d2bfae5fe1
commit
64cdf7cdd1
4 changed files with 19 additions and 19 deletions
|
@ -3,6 +3,7 @@ base = { family = "Inconsolata", size = 14 }
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
background = "$surface.0"
|
background = "$surface.0"
|
||||||
|
pane_divider = { width = 3, color = "$border.0" }
|
||||||
|
|
||||||
[workspace.titlebar]
|
[workspace.titlebar]
|
||||||
border = { width = 1, bottom = true, color = "$surface.1" }
|
border = { width = 1, bottom = true, color = "$surface.1" }
|
||||||
|
|
|
@ -6,6 +6,7 @@ use gpui::{
|
||||||
color::Color,
|
color::Color,
|
||||||
elements::{ContainerStyle, LabelStyle},
|
elements::{ContainerStyle, LabelStyle},
|
||||||
fonts::{HighlightStyle, TextStyle},
|
fonts::{HighlightStyle, TextStyle},
|
||||||
|
Border,
|
||||||
};
|
};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
@ -36,6 +37,7 @@ pub struct Workspace {
|
||||||
pub titlebar: ContainerStyle,
|
pub titlebar: ContainerStyle,
|
||||||
pub tab: Tab,
|
pub tab: Tab,
|
||||||
pub active_tab: Tab,
|
pub active_tab: Tab,
|
||||||
|
pub pane_divider: Border,
|
||||||
pub left_sidebar: Sidebar,
|
pub left_sidebar: Sidebar,
|
||||||
pub right_sidebar: Sidebar,
|
pub right_sidebar: Sidebar,
|
||||||
}
|
}
|
||||||
|
|
|
@ -972,7 +972,9 @@ impl View for Workspace {
|
||||||
{
|
{
|
||||||
content.add_child(Flexible::new(0.8, element).boxed());
|
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) =
|
if let Some(element) =
|
||||||
self.right_sidebar.render_active_item(&settings, cx)
|
self.right_sidebar.render_active_item(&settings, cx)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
use crate::theme::Theme;
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::{anyhow, Result};
|
||||||
use gpui::{color::Color, elements::*, Axis, Border};
|
use gpui::{elements::*, Axis};
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||||
pub struct PaneGroup {
|
pub struct PaneGroup {
|
||||||
|
@ -44,8 +45,8 @@ impl PaneGroup {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn render<'a>(&self) -> ElementBox {
|
pub fn render<'a>(&self, theme: &Theme) -> ElementBox {
|
||||||
self.root.render()
|
self.root.render(theme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,10 +74,10 @@ impl Member {
|
||||||
Member::Axis(PaneAxis { axis, members })
|
Member::Axis(PaneAxis { axis, members })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn render<'a>(&self) -> ElementBox {
|
pub fn render<'a>(&self, theme: &Theme) -> ElementBox {
|
||||||
match self {
|
match self {
|
||||||
Member::Pane(view_id) => ChildView::new(*view_id).boxed(),
|
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;
|
let last_member_ix = self.members.len() - 1;
|
||||||
Flex::new(self.axis)
|
Flex::new(self.axis)
|
||||||
.with_children(self.members.iter().enumerate().map(|(ix, member)| {
|
.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 {
|
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 {
|
match self.axis {
|
||||||
Axis::Vertical => border.bottom = true,
|
Axis::Vertical => border.bottom = true,
|
||||||
Axis::Horizontal => border.right = true,
|
Axis::Horizontal => border.right = true,
|
||||||
|
@ -377,13 +382,3 @@ mod tests {
|
||||||
// Ok(())
|
// Ok(())
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
fn border_width() -> f32 {
|
|
||||||
2.0
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
fn border_color() -> Color {
|
|
||||||
Color::new(0xdb, 0xdb, 0xdc, 0xff)
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue