diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index 8653648..75c7519 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -966,23 +966,6 @@ const cmds = struct { } pub const close_split_meta: Meta = .{ .description = "Close split view" }; - pub fn close_view(self: *Self, ctx: Ctx) Result { - var view: usize = undefined; - if (!try ctx.args.match(.{tp.extract(&view)})) return error.InvalidCloseViewArgument; - - if (view >= self.views.widgets.items.len) return; - self.remove_view(view) catch return; - - const buffers = self.buffer_manager.list_unordered(self.allocator) catch @panic("OOM close_view"); - defer self.allocator.free(buffers); - for (buffers) |buffer| if (buffer.get_last_view()) |buffer_view| - if (buffer_view >= view) - buffer.set_last_view(buffer_view - 1); - - _ = self.widgets_widget.msg(.{"splits_updated"}) catch {}; - } - pub const close_view_meta: Meta = .{ .arguments = &.{.integer} }; - pub fn close_splits(self: *Self, _: Ctx) Result { while (self.views.widgets.items.len > 1) try self.remove_view(1); @@ -1541,8 +1524,11 @@ pub fn handle_editor_event(self: *Self, editor: *ed.Editor, m: tp.message) tp.re self.show_file_async(file_path) else if (self.views.widgets.items.len == 1) self.show_home_async() - else - tp.self_pid().send(.{ "cmd", "close_view", .{view} }) catch return; + else { + tp.self_pid().send(.{ "cmd", "close_split", .{} }) catch return; + if (self.get_next_mru_buffer(.non_hidden)) |file_path| + self.show_file_async(file_path); + } } else self.show_home_async(); return; } diff --git a/src/tui/status/tabs.zig b/src/tui/status/tabs.zig index 6c379cc..7f1566e 100644 --- a/src/tui/status/tabs.zig +++ b/src/tui/status/tabs.zig @@ -491,19 +491,13 @@ pub const TabBar = struct { const buffer = buffer_manager.buffer_from_ref(src_tab.buffer_ref); const active = if (buffer) |buf| if (mv.get_editor_for_buffer(buf)) |_| true else false else false; - if (new_view == old_view) { - tabs.insert(self.allocator, dst_idx, src_tab) catch @panic("OOM move_tab_to"); - } else { - if (new_view orelse 0 < old_view orelse 0) - tabs.append(self.allocator, src_tab) catch @panic("OOM move_tab_to") - else - tabs.insert(self.allocator, 0, src_tab) catch @panic("OOM move_tab_to"); - if (buffer) |buf| { - buf.set_last_view(new_view); - if (mv.get_editor_for_buffer(buf)) |editor| - editor.close_editor() catch {}; - } - } + tabs.insert(self.allocator, dst_idx, src_tab) catch @panic("OOM move_tab_to"); + + if (new_view != old_view) if (buffer) |buf| { + buf.set_last_view(new_view); + if (mv.get_editor_for_buffer(buf)) |editor| + editor.close_editor() catch {}; + }; const drag_source, _ = tui.get_drag_source(); self.update_tab_widgets(drag_source) catch {};