fix: find panels even if the panel widget is not the top widget

This commit is contained in:
CJ van den Berg 2025-12-11 18:47:01 +01:00
parent b62a1e906f
commit f87a9cfb6d
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -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;
}