diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index e4f7b94..6bde6fc 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -982,10 +982,13 @@ const cmds = struct { pub const open_terminal_meta: Meta = .{ .description = "Open terminal", .arguments = &.{.string} }; pub fn focus_terminal(self: *Self, _: Ctx) Result { - if (self.get_panel_view(terminal_view)) |vt| - vt.focus() - else + if (self.get_panel_view(terminal_view)) |vt| { + vt.toggle_focus(); + } else { try self.toggle_panel_view(terminal_view, .enable); + if (self.get_panel_view(terminal_view)) |vt| + vt.focus(); + } } pub const focus_terminal_meta: Meta = .{ .description = "Focus terminal panel" }; diff --git a/src/tui/terminal_view.zig b/src/tui/terminal_view.zig index 2e1bdbf..e4d4d7a 100644 --- a/src/tui/terminal_view.zig +++ b/src/tui/terminal_view.zig @@ -148,6 +148,10 @@ pub fn receive(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool { return true; } +pub fn toggle_focus(self: *Self) void { + if (self.focused) self.unfocus() else self.focus(); +} + pub fn focus(self: *Self) void { self.focused = true; tui.set_keyboard_focus(Widget.to(self));