From f87a9cfb6d72a23ab525aabd7f4058003f4a682b Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 11 Dec 2025 18:47:01 +0100 Subject: [PATCH] fix: find panels even if the panel widget is not the top widget --- src/tui/mainview.zig | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index 190c92a..b3424bf 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -273,7 +273,7 @@ fn bottom_bar_primary_drag(self: *Self, y: usize) tp.result { fn toggle_panel_view(self: *Self, view: anytype, mode: enum { toggle, enable, disable }) !void { if (self.panels) |panels| { - if (panels.get(@typeName(view))) |w| { + if (self.get_panel(@typeName(view))) |w| { if (mode != .enable) { panels.remove(w.*); if (panels.empty()) { @@ -294,6 +294,14 @@ fn toggle_panel_view(self: *Self, view: anytype, mode: enum { toggle, enable, di tui.resize(); } +fn get_panel(self: *Self, name_: []const u8) ?*Widget { + if (self.panels) |panels| + for (panels.widgets.items) |*w| + if (w.widget.get(name_)) |_| + return &w.widget; + return null; +} + fn get_panel_view(self: *Self, comptime view: type) ?*view { return if (self.panels) |panels| if (panels.get(@typeName(view))) |w| w.dynamic_cast(view) else null else null; }