fix: always update tab views when splits arrangement has changed
closes #485
This commit is contained in:
parent
cc2aabf7dd
commit
7520289442
2 changed files with 6 additions and 1 deletions
|
|
@ -1739,6 +1739,7 @@ fn add_and_activate_view(self: *Self, widget: Widget) !void {
|
||||||
try self.views.add(widget);
|
try self.views.add(widget);
|
||||||
self.active_view = self.views.widgets.items.len - 1;
|
self.active_view = self.views.widgets.items.len - 1;
|
||||||
if (self.views.get_at(self.active_view)) |view| view.focus();
|
if (self.views.get_at(self.active_view)) |view| view.focus();
|
||||||
|
_ = try self.widgets_widget.msg(.{"splits_updated"});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn find_view_for_widget(self: *Self, w_: *const Widget) ?usize {
|
pub fn find_view_for_widget(self: *Self, w_: *const Widget) ?usize {
|
||||||
|
|
@ -1864,7 +1865,6 @@ fn create_home(self: *Self) !void {
|
||||||
pub fn create_home_split(self: *Self) !void {
|
pub fn create_home_split(self: *Self) !void {
|
||||||
tui.reset_drag_context();
|
tui.reset_drag_context();
|
||||||
try self.add_and_activate_view(try home.create(self.allocator, Widget.to(self)));
|
try self.add_and_activate_view(try home.create(self.allocator, Widget.to(self)));
|
||||||
_ = try self.widgets_widget.msg(.{"splits_updated"});
|
|
||||||
tui.resize();
|
tui.resize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -281,6 +281,7 @@ pub const TabBar = struct {
|
||||||
const mv = tui.mainview() orelse @panic("tabs no main view");
|
const mv = tui.mainview() orelse @panic("tabs no main view");
|
||||||
const buffer_manager = tui.get_buffer_manager() orelse @panic("tabs no buffer manager");
|
const buffer_manager = tui.get_buffer_manager() orelse @panic("tabs no buffer manager");
|
||||||
var prev_widget_count: usize = 0;
|
var prev_widget_count: usize = 0;
|
||||||
|
|
||||||
for (self.widget_list.widgets.items) |*split_widgetstate| if (split_widgetstate.widget.dynamic_cast(WidgetList)) |split| {
|
for (self.widget_list.widgets.items) |*split_widgetstate| if (split_widgetstate.widget.dynamic_cast(WidgetList)) |split| {
|
||||||
prev_widget_count += 1;
|
prev_widget_count += 1;
|
||||||
for (split.widgets.items) |_| prev_widget_count += 1;
|
for (split.widgets.items) |_| prev_widget_count += 1;
|
||||||
|
|
@ -296,6 +297,10 @@ pub const TabBar = struct {
|
||||||
split.deinit(self.widget_list.allocator);
|
split.deinit(self.widget_list.allocator);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for (self.tabs) |*tab| if (buffer_manager.buffer_from_ref(tab.buffer_ref)) |buffer| {
|
||||||
|
tab.view = buffer.get_last_view() orelse 0;
|
||||||
|
};
|
||||||
|
|
||||||
const views = mv.get_view_count();
|
const views = mv.get_view_count();
|
||||||
|
|
||||||
var widget_count: usize = 0;
|
var widget_count: usize = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue