From e720d35298d787d8a9da835ecf0461e6ec85b2db Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 5 Mar 2025 17:47:37 +0100 Subject: [PATCH 1/2] feat: toggle inputview if showing in toggle_panel --- src/tui/mainview.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index e6d3c80..f0a2083 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -28,6 +28,7 @@ const home = @import("home.zig"); const logview = @import("logview.zig"); const filelist_view = @import("filelist_view.zig"); const info_view = @import("info_view.zig"); +const input_view = @import("inputview.zig"); const Self = @This(); const Commands = command.Collection(cmds); @@ -514,6 +515,8 @@ const cmds = struct { try self.toggle_panel_view(info_view, false) else if (self.is_panel_view_showing(filelist_view)) try self.toggle_panel_view(filelist_view, false) + else if (self.is_panel_view_showing(input_view)) + try self.toggle_panel_view(input_view, false) else try self.toggle_panel_view(logview, false); } @@ -530,7 +533,7 @@ const cmds = struct { pub const show_logview_meta = .{ .description = "View log" }; pub fn toggle_inputview(self: *Self, _: Ctx) Result { - try self.toggle_panel_view(@import("inputview.zig"), false); + try self.toggle_panel_view(input_view, false); } pub const toggle_inputview_meta = .{ .description = "Toggle raw input log" }; From 66a1764d6cf7e519e96e51889aaf942be1eb616d Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 5 Mar 2025 17:49:01 +0100 Subject: [PATCH 2/2] fix: stop after removing widget in Widget.remove (fixes ReleaseFast crash) --- src/tui/WidgetList.zig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tui/WidgetList.zig b/src/tui/WidgetList.zig index e62b6f3..f9fcdce 100644 --- a/src/tui/WidgetList.zig +++ b/src/tui/WidgetList.zig @@ -93,8 +93,10 @@ pub fn addP(self: *Self, w_: Widget) !*Widget { } pub fn remove(self: *Self, w: Widget) void { - for (self.widgets.items, 0..) |p, i| if (p.widget.ptr == w.ptr) + for (self.widgets.items, 0..) |p, i| if (p.widget.ptr == w.ptr) { self.widgets.orderedRemove(i).widget.deinit(self.allocator); + return; + }; } pub fn remove_all(self: *Self) void {