refactor: split out focus_view function
This commit is contained in:
parent
023b87184a
commit
82e2d2f4ec
1 changed files with 12 additions and 8 deletions
|
|
@ -874,14 +874,7 @@ const cmds = struct {
|
|||
pub fn focus_split(self: *Self, ctx: Ctx) Result {
|
||||
var n: usize = undefined;
|
||||
if (!try ctx.args.match(.{tp.extract(&n)})) return error.InvalidFocusSplitArgument;
|
||||
|
||||
if (n > self.views.widgets.items.len) return;
|
||||
if (n == self.views.widgets.items.len)
|
||||
return self.create_home_split();
|
||||
|
||||
if (self.views.get_at(self.active_view)) |view| view.unfocus();
|
||||
self.active_view = n;
|
||||
if (self.views.get_at(self.active_view)) |view| view.focus();
|
||||
try self.focus_view(n);
|
||||
}
|
||||
pub const focus_split_meta: Meta = .{ .description = "Focus split view", .arguments = &.{.integer} };
|
||||
|
||||
|
|
@ -1574,6 +1567,17 @@ pub fn focus_view_by_widget(self: *Self, w: *Widget) tui.FocusAction {
|
|||
return .changed;
|
||||
}
|
||||
|
||||
pub fn focus_view(self: *Self, n: usize) !void {
|
||||
if (n == self.active_view) return;
|
||||
if (n > self.views.widgets.items.len) return;
|
||||
if (n == self.views.widgets.items.len)
|
||||
return self.create_home_split();
|
||||
|
||||
if (self.views.get_at(self.active_view)) |view| view.unfocus();
|
||||
self.active_view = n;
|
||||
if (self.views.get_at(self.active_view)) |view| view.focus();
|
||||
}
|
||||
|
||||
fn remove_active_view(self: *Self) !void {
|
||||
if (self.views.widgets.items.len == 1) return; // can't delete last view
|
||||
self.active_editor = null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue