From 434025da33568bd2ae2aaadce71ced4a16df6805 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sat, 25 Jan 2025 11:03:12 +0100 Subject: [PATCH] fix(tabs): alpha rendering of inactive tabs --- src/tui/status/tabs.zig | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/tui/status/tabs.zig b/src/tui/status/tabs.zig index f01796f..641a9cc 100644 --- a/src/tui/status/tabs.zig +++ b/src/tui/status/tabs.zig @@ -64,9 +64,12 @@ const TabBar = struct { } pub fn render(self: *Self, theme: *const Widget.Theme) bool { - self.plane.set_base_style(theme.statusbar); + self.plane.set_base_style(theme.editor); self.plane.erase(); self.plane.home(); + self.plane.set_style(theme.statusbar); + self.plane.fill(" "); + self.plane.home(); return self.widget_list_widget.render(theme); } @@ -217,13 +220,34 @@ const Tab = struct { fn render(self: *@This(), btn: *Button.State(@This()), theme: *const Widget.Theme) bool { const active = self.tabbar.active_buffer == self.buffer; + return if (active) + self.render_active(btn, theme) + else + self.render_inactive(btn, theme); + } + + fn render_active(self: *@This(), btn: *Button.State(@This()), theme: *const Widget.Theme) bool { btn.plane.set_base_style(theme.statusbar); btn.plane.erase(); btn.plane.home(); - btn.plane.set_style(if (active) theme.editor else if (btn.hover) theme.statusbar_hover else theme.statusbar); + btn.plane.set_style(theme.editor); btn.plane.fill(" "); btn.plane.home(); - btn.plane.set_style(if (active) theme.editor else if (btn.hover) theme.statusbar_hover else theme.statusbar); + btn.plane.set_style(theme.editor); + return self.render_content(btn); + } + + fn render_inactive(self: *@This(), btn: *Button.State(@This()), theme: *const Widget.Theme) bool { + btn.plane.set_base_style(theme.editor); + btn.plane.erase(); + btn.plane.home(); + btn.plane.set_style(if (btn.hover) theme.statusbar_hover else theme.statusbar); + btn.plane.fill(" "); + btn.plane.home(); + return self.render_content(btn); + } + + fn render_content(self: *@This(), btn: *Button.State(@This())) bool { _ = btn.plane.putstr(" ") catch {}; if (self.buffer.is_dirty()) _ = btn.plane.putstr(dirty_indicator) catch {};