refactor: rename TabBar.splits_list

This commit is contained in:
CJ van den Berg 2026-02-12 12:59:16 +01:00
parent 86856f6631
commit 645e0d4e3b
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -100,8 +100,8 @@ pub fn create(allocator: std.mem.Allocator, parent: Plane, event_handler: ?Event
pub const TabBar = struct { pub const TabBar = struct {
allocator: std.mem.Allocator, allocator: std.mem.Allocator,
plane: Plane, plane: Plane,
widget_list: *WidgetList, splits_list: *WidgetList,
widget_list_widget: Widget, splits_list_widget: Widget,
event_handler: ?EventHandler, event_handler: ?EventHandler,
tabs: []TabBarTab = &[_]TabBarTab{}, tabs: []TabBarTab = &[_]TabBarTab{},
active_focused_buffer_ref: ?Buffer.Ref = null, active_focused_buffer_ref: ?Buffer.Ref = null,
@ -133,8 +133,8 @@ pub const TabBar = struct {
return .{ return .{
.allocator = allocator, .allocator = allocator,
.plane = w.plane, .plane = w.plane,
.widget_list = w, .splits_list = w,
.widget_list_widget = w.widget(), .splits_list_widget = w.widget(),
.event_handler = event_handler, .event_handler = event_handler,
.tab_style = tab_style, .tab_style = tab_style,
.tab_style_bufs = tab_style_bufs, .tab_style_bufs = tab_style_bufs,
@ -145,13 +145,13 @@ pub const TabBar = struct {
pub fn deinit(self: *Self, allocator: std.mem.Allocator) void { pub fn deinit(self: *Self, allocator: std.mem.Allocator) void {
root.free_config(self.allocator, self.tab_style_bufs); root.free_config(self.allocator, self.tab_style_bufs);
self.allocator.free(self.tabs); self.allocator.free(self.tabs);
self.widget_list_widget.deinit(allocator); self.splits_list_widget.deinit(allocator);
allocator.destroy(self); allocator.destroy(self);
} }
pub fn layout(self: *Self) Widget.Layout { pub fn layout(self: *Self) Widget.Layout {
return if (self.tabs.len >= self.minimum_tabs_shown) return if (self.tabs.len >= self.minimum_tabs_shown)
self.widget_list_widget.layout() self.splits_list_widget.layout()
else else
.{ .static = 0 }; .{ .static = 0 };
} }
@ -159,9 +159,9 @@ pub const TabBar = struct {
pub fn update(self: *Self) void { pub fn update(self: *Self) void {
const drag_source, const drag_btn = tui.get_drag_source(); const drag_source, const drag_btn = tui.get_drag_source();
self.update_tabs(drag_source) catch {}; self.update_tabs(drag_source) catch {};
self.widget_list_widget.resize(Widget.Box.from(self.plane)); self.splits_list_widget.resize(Widget.Box.from(self.plane));
self.widget_list_widget.update(); self.splits_list_widget.update();
for (self.widget_list.widgets.items) |*split_widgetstate| if (split_widgetstate.widget.dynamic_cast(WidgetList)) |split| for (self.splits_list.widgets.items) |*split_widgetstate| if (split_widgetstate.widget.dynamic_cast(WidgetList)) |split|
for (split.widgets.items) |*widgetstate| if (widgetstate.widget.dynamic_cast(Tab.ButtonType)) |btn| if (btn.drag_pos) |_| for (split.widgets.items) |*widgetstate| if (widgetstate.widget.dynamic_cast(Tab.ButtonType)) |btn| if (btn.drag_pos) |_|
tui.update_drag_source(&widgetstate.widget, drag_btn); tui.update_drag_source(&widgetstate.widget, drag_btn);
tui.refresh_hover(@src()); tui.refresh_hover(@src());
@ -236,7 +236,7 @@ pub const TabBar = struct {
fn handle_event_drop_target(self: *Self, dragging: usize) tp.result { fn handle_event_drop_target(self: *Self, dragging: usize) tp.result {
var hover_view: ?usize = null; var hover_view: ?usize = null;
for (self.widget_list.widgets.items, 0..) |*split_widgetstate, idx| for (self.splits_list.widgets.items, 0..) |*split_widgetstate, idx|
if (split_widgetstate.widget.dynamic_cast(WidgetList)) |split| { if (split_widgetstate.widget.dynamic_cast(WidgetList)) |split| {
for (split.widgets.items) |*widgetstate| for (split.widgets.items) |*widgetstate|
if (widgetstate.widget.dynamic_cast(drop_target.ButtonType)) |btn| { if (widgetstate.widget.dynamic_cast(drop_target.ButtonType)) |btn| {
@ -251,20 +251,20 @@ pub const TabBar = struct {
} }
pub fn handle_resize(self: *Self, pos: Widget.Box) void { pub fn handle_resize(self: *Self, pos: Widget.Box) void {
self.widget_list_widget.resize(pos); self.splits_list_widget.resize(pos);
self.plane = self.widget_list.plane; self.plane = self.splits_list.plane;
} }
pub fn get(self: *const Self, name: []const u8) ?*const Widget { pub fn get(self: *const Self, name: []const u8) ?*const Widget {
return self.widget_list_widget.get(name); return self.splits_list_widget.get(name);
} }
pub fn walk(self: *Self, ctx: *anyopaque, f: Widget.WalkFn, _: *Widget) bool { pub fn walk(self: *Self, ctx: *anyopaque, f: Widget.WalkFn, _: *Widget) bool {
return self.widget_list_widget.walk(ctx, f); return self.splits_list_widget.walk(ctx, f);
} }
pub fn hover(self: *Self) bool { pub fn hover(self: *Self) bool {
return self.widget_list_widget.hover(); return self.splits_list_widget.hover();
} }
fn update_tabs(self: *Self, drag_source: ?*Widget) !void { fn update_tabs(self: *Self, drag_source: ?*Widget) !void {
@ -273,7 +273,7 @@ pub const TabBar = struct {
if (tab.widget.dynamic_cast(Tab.ButtonType)) |btn| if (tab.widget.dynamic_cast(Tab.ButtonType)) |btn|
if (btn.drag_pos) |_| break true; if (btn.drag_pos) |_| break true;
} else false; } else false;
if (!dragging and !buffers_changed and self.widget_list.widgets.items.len > 0) return; if (!dragging and !buffers_changed and self.splits_list.widgets.items.len > 0) return;
try self.update_tab_widgets(drag_source); try self.update_tab_widgets(drag_source);
} }
@ -282,19 +282,19 @@ pub const TabBar = struct {
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.splits_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;
}; };
for (self.widget_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split| { for (self.splits_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split| {
for (split.widgets.items) |*widget| for (split.widgets.items) |*widget|
if (&widget.widget == drag_source) tui.reset_drag_context(); if (&widget.widget == drag_source) tui.reset_drag_context();
}; };
while (self.widget_list.pop()) |split_widget| if (split_widget.dynamic_cast(WidgetList)) |split| { while (self.splits_list.pop()) |split_widget| if (split_widget.dynamic_cast(WidgetList)) |split| {
while (split.pop()) |widget| if (widget.dynamic_cast(Tab.ButtonType) == null) while (split.pop()) |widget| if (widget.dynamic_cast(Tab.ButtonType) == null)
widget.deinit(self.widget_list.allocator); widget.deinit(self.splits_list.allocator);
split.deinit(self.widget_list.allocator); split.deinit(self.splits_list.allocator);
}; };
for (self.tabs) |*tab| if (buffer_manager.buffer_from_ref(tab.buffer_ref)) |buffer| { for (self.tabs) |*tab| if (buffer_manager.buffer_from_ref(tab.buffer_ref)) |buffer| {
@ -306,8 +306,8 @@ pub const TabBar = struct {
var widget_count: usize = 0; var widget_count: usize = 0;
for (0..views) |view| { for (0..views) |view| {
var first = true; var first = true;
var view_widget_list = try WidgetList.createH(self.allocator, self.widget_list.plane, "split", .dynamic); var view_widget_list = try WidgetList.createH(self.allocator, self.splits_list.plane, "split", .dynamic);
try self.widget_list.add(view_widget_list.widget()); try self.splits_list.add(view_widget_list.widget());
widget_count += 1; widget_count += 1;
for (self.tabs) |tab| { for (self.tabs) |tab| {
const tab_view = tab.view orelse 0; const tab_view = tab.view orelse 0;
@ -413,7 +413,7 @@ pub const TabBar = struct {
} }
fn find_first_tab_buffer(self: *Self) ?Buffer.Ref { fn find_first_tab_buffer(self: *Self) ?Buffer.Ref {
for (self.widget_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split| for (self.splits_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split|
for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn|
return btn.opts.ctx.buffer_ref; return btn.opts.ctx.buffer_ref;
return null; return null;
@ -421,7 +421,7 @@ pub const TabBar = struct {
fn find_last_tab_buffer(self: *Self) ?Buffer.Ref { fn find_last_tab_buffer(self: *Self) ?Buffer.Ref {
var last: ?Buffer.Ref = null; var last: ?Buffer.Ref = null;
for (self.widget_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split| for (self.splits_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split|
for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| { for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| {
last = btn.opts.ctx.buffer_ref; last = btn.opts.ctx.buffer_ref;
}; };
@ -430,7 +430,7 @@ pub const TabBar = struct {
fn find_next_tab_buffer(self: *Self) struct { ?Buffer.Ref, usize } { fn find_next_tab_buffer(self: *Self) struct { ?Buffer.Ref, usize } {
var found_active: bool = false; var found_active: bool = false;
for (self.widget_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split| for (self.splits_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split|
for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| { for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| {
if (found_active) if (found_active)
return .{ btn.opts.ctx.buffer_ref, btn.opts.ctx.view }; return .{ btn.opts.ctx.buffer_ref, btn.opts.ctx.view };
@ -443,7 +443,7 @@ pub const TabBar = struct {
fn find_previous_tab_buffer(self: *Self) struct { ?Buffer.Ref, usize } { fn find_previous_tab_buffer(self: *Self) struct { ?Buffer.Ref, usize } {
var previous: ?Buffer.Ref = null; var previous: ?Buffer.Ref = null;
var previous_view: usize = 0; var previous_view: usize = 0;
for (self.widget_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split| for (self.splits_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split|
for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| { for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(Tab.ButtonType)) |btn| {
if (btn.opts.ctx.buffer_ref == self.active_focused_buffer_ref) if (btn.opts.ctx.buffer_ref == self.active_focused_buffer_ref)
return .{ previous, previous_view }; return .{ previous, previous_view };
@ -663,7 +663,7 @@ const Tab = struct {
) !Widget { ) !Widget {
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");
const buffer = buffer_manager.buffer_from_ref(buffer_ref); const buffer = buffer_manager.buffer_from_ref(buffer_ref);
return Button.create_widget(Tab, tabbar.allocator, tabbar.widget_list.plane, .{ return Button.create_widget(Tab, tabbar.allocator, tabbar.splits_list.plane, .{
.ctx = .{ .tabbar = tabbar, .buffer_ref = buffer_ref, .view = if (buffer) |buf| buf.get_last_view() orelse 0 else 0, .tab_style = tab_style }, .ctx = .{ .tabbar = tabbar, .buffer_ref = buffer_ref, .view = if (buffer) |buf| buf.get_last_view() orelse 0 else 0, .tab_style = tab_style },
.label = if (buffer) |buf| name_from_buffer(buf) else "???", .label = if (buffer) |buf| name_from_buffer(buf) else "???",
.on_click = Tab.on_click, .on_click = Tab.on_click,
@ -1026,7 +1026,7 @@ const drop_target = struct {
tabbar: *TabBar, tabbar: *TabBar,
view: usize, view: usize,
) !Widget { ) !Widget {
return Button.create_widget(@This(), tabbar.allocator, tabbar.widget_list.plane, .{ return Button.create_widget(@This(), tabbar.allocator, tabbar.splits_list.plane, .{
.ctx = .{ .tabbar = tabbar, .view = view }, .ctx = .{ .tabbar = tabbar, .view = view },
.label = &.{}, .label = &.{},
.on_layout = @This().layout, .on_layout = @This().layout,