diff --git a/crates/theme/src/theme.rs b/crates/theme/src/theme.rs index 23dfa4b58b..457f649a6b 100644 --- a/crates/theme/src/theme.rs +++ b/crates/theme/src/theme.rs @@ -75,12 +75,13 @@ pub struct TabBar { pub pane_button: Interactive, pub active_pane: TabStyles, pub inactive_pane: TabStyles, + pub height: f32, } #[derive(Clone, Deserialize, Default)] pub struct TabStyles { - active_tab: Tab, - inactive_tab: Tab, + pub active_tab: Tab, + pub inactive_tab: Tab, } #[derive(Clone, Deserialize, Default)] diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index c384748c3c..b06da7fe33 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -873,18 +873,24 @@ impl Pane { }; let is_pane_active = self.is_active; + + let tab_styles = match is_pane_active { + true => theme.workspace.tab_bar.active_pane.clone(), + false => theme.workspace.tab_bar.inactive_pane.clone(), + }; + let filler_style = tab_styles.inactive_tab.clone(); + let mut row = Flex::row().scrollable::(1, autoscroll, cx); for (ix, (item, detail)) in self.items.iter().zip(self.tab_details(cx)).enumerate() { let detail = if detail == 0 { None } else { Some(detail) }; let is_tab_active = ix == self.active_item_index; row.add_child({ - let mut tab_style = match (is_pane_active, is_tab_active) { - (true, true) => theme.workspace.active_pane_active_tab.clone(), - (true, false) => theme.workspace.active_pane_inactive_tab.clone(), - (false, true) => theme.workspace.inactive_pane_active_tab.clone(), - (false, false) => theme.workspace.inactive_pane_inactive_tab.clone(), + let mut tab_style = match is_tab_active { + true => tab_styles.active_tab.clone(), + false => tab_styles.inactive_tab.clone(), }; + let title = item.tab_content(detail, &tab_style, cx); if ix == 0 { @@ -996,17 +1002,11 @@ impl Pane { }) } - let filler_style = if is_pane_active { - &theme.workspace.active_pane_inactive_tab - } else { - &theme.workspace.inactive_pane_inactive_tab - }; - row.add_child( Empty::new() .contained() .with_style(filler_style.container) - .with_border(theme.workspace.active_pane_active_tab.container.border) + .with_border(filler_style.container.border) .flex(0., true) .named("filler"), ); @@ -1081,7 +1081,8 @@ impl View for Pane { 0, cx, |mouse_state, cx| { - let theme = &cx.global::().theme.workspace; + let theme = + &cx.global::().theme.workspace.tab_bar; let style = theme.pane_button.style_for(mouse_state, false); Svg::new("icons/split_12.svg") @@ -1111,13 +1112,7 @@ impl View for Pane { tab_row .constrained() - .with_height( - cx.global::() - .theme - .workspace - .active_pane_active_tab - .height, - ) + .with_height(cx.global::().theme.workspace.tab_bar.height) .boxed() }) .with_child(ChildView::new(&self.toolbar).boxed())