From d7d5a7f8f6c3faf7e1ea1a36df053769243b51ac Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 5 Feb 2025 08:09:48 +0300 Subject: tab indicator: Add hide-when-single-tab --- src/layout/tab_indicator.rs | 8 +++++++- src/layout/tests.rs | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'src/layout') diff --git a/src/layout/tab_indicator.rs b/src/layout/tab_indicator.rs index 114fa810..0f9ebaf9 100644 --- a/src/layout/tab_indicator.rs +++ b/src/layout/tab_indicator.rs @@ -63,6 +63,13 @@ impl TabIndicator { return; } + let count = tabs.clone().count(); + if self.config.hide_when_single_tab && count == 1 { + self.shader_locs.clear(); + self.shaders.clear(); + return; + } + // Tab indicators are rendered relative to the tile geometry. let tile_geo = Rectangle::new(Point::from((0., 0.)), tile_size); @@ -74,7 +81,6 @@ impl TabIndicator { let total_prop = self.config.length.total_proportion.unwrap_or(0.5); let min_length = round(tile_size.h * total_prop.clamp(0., 2.)); - let count = tabs.clone().count(); self.shaders.resize_with(count, Default::default); self.shader_locs.resize_with(count, Default::default); diff --git a/src/layout/tests.rs b/src/layout/tests.rs index 5c1749a3..dee23fc0 100644 --- a/src/layout/tests.rs +++ b/src/layout/tests.rs @@ -3242,12 +3242,14 @@ prop_compose! { prop_compose! { fn arbitrary_tab_indicator()( off in any::(), + hide_when_single_tab in any::(), width in arbitrary_spacing(), gap in arbitrary_spacing_neg(), length in (0f64..2f64), ) -> niri_config::TabIndicator { niri_config::TabIndicator { off, + hide_when_single_tab, width: FloatOrInt(width), gap: FloatOrInt(gap), length: TabIndicatorLength { total_proportion: Some(length) }, -- cgit