╭ changed ────────────╮ │src/ui/Repo/Files.zig│ ╰─────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │357 const row_height: usize = 3; │ │358 │ │359 pub fn init(allocator: std.mem.Allocator, data: *const Self, session: *ui.Session) !View { │ │360 - var outer = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert });│ │360 + var outer = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │361 errdefer outer.deinit(allocator); │ │362 │ │363 if (data.no_commits) { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │376 try outer.children.put(allocator, header_view.getFocus().id, .{ .widget = .{ .search_header = header_view }, .rect = null, .min_size = .{ .width = null, .height = 4 } });│ │377 } │ │378 │ │379 - var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .horiz }); │ │379 + var box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .horiz }); │ │380 errdefer box.deinit(allocator); │ │381 │ │382 var shows_file = false; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │384 // the directory listing on the left (one focusable row each). │ │385 { │ │386 var list_scroll = blk: { │ │387 - var list_box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert, .stretch = true });│ │387 + var list_box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert, .stretch = true }); │ │388 errdefer list_box.deinit(allocator); │ │389 │ │390 // link kinds are borrowed by the rows, so they live in the page │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │442 // populateDetail. │ │443 { │ │444 var detail_outer = blk: { │ │445 - var frame = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert });│ │445 + var frame = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │446 errdefer frame.deinit(allocator); │ │447 │ │448 { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │449 - var nav_box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .horiz }); │ │449 + var nav_box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .horiz }); │ │450 errdefer nav_box.deinit(allocator); │ │451 try frame.children.put(allocator, nav_box.getFocus().id, .{ .widget = .{ .box = nav_box }, .rect = null, .min_size = null });│ │452 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │456 // (the content box itself is borderless). │ │457 var scroll_frame = blk2: { │ │458 var detail_scroll = blk3: { │ │459 - var detail_inner = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert }); │ │459 + var detail_inner = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │460 errdefer detail_inner.deinit(allocator); │ │461 break :blk3 try wgt.Scroll(ui.Widget).init(allocator, .{ .box = detail_inner }, .{ .direction = .both, .web_native = !session.is_terminal, .fill = true });│ │462 }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │463 errdefer detail_scroll.deinit(allocator); │ │464 - var sf = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = .single, .round_corners = true, .direction = .vert });│ │464 + var sf = try wgt.Box(ui.Widget).init(allocator, .{ .border = .single, .round_corners = true, .direction = .vert }); │ │465 errdefer sf.deinit(allocator); │ │466 // the wrapper's selected child is its scroll, so the focus │ │467 // chain reaches the content box (populateDetail points the │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │496 } │ │497 │ │498 fn addRow(allocator: std.mem.Allocator, box: *wgt.Box(ui.Widget), label: []const u8, bottom_label: []const u8, link: []const u8) !void { │ │499 - var row = try wgt.TextBox.init(allocator, label, .{ .border_style = .hidden, .round_corners = true, .wrap_kind = .none, .bottom_label = bottom_label }); │ │499 + var row = try wgt.TextBox.init(allocator, label, .{ .border = .hidden, .round_corners = true, .wrap_kind = .none, .bottom_label = .{ .text = bottom_label } });│ │500 errdefer row.deinit(allocator); │ │501 row.getFocus().mode = .all; │ │502 if (link.len != 0) row.getFocus().kind = .{ .custom = link }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │509 // the box follow it, like addRow. │ │510 fn addContentBox(self: *View, allocator: std.mem.Allocator, box: *wgt.Box(ui.Widget), text: []const u8, link: []const u8) !void {│ │511 _ = self; │ │512 - var tb = try wgt.TextBox.init(allocator, text, .{ .border_style = null, .wrap_kind = .none }); │ │512 + var tb = try wgt.TextBox.init(allocator, text, .{ .border = null, .wrap_kind = .none }); │ │513 errdefer tb.deinit(allocator); │ │514 tb.getFocus().mode = .all; │ │515 if (link.len != 0) tb.getFocus().kind = .{ .custom = link }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │615 // the content scroll's border is single normally and double when the │ │616 // content is focused (the content box itself is borderless). │ │617 const has_content = self.detailInner().children.count() > 0; │ │618 - self.detailScrollFrame().options.border_style = if (!has_content) null else if (self.focusOnContent(root_focus)) .double else .single;│ │618 + self.detailScrollFrame().options.border = if (!has_content) null else if (self.focusOnContent(root_focus)) .double else .single; │ │619 │ │620 // cap the list at list_max_width only while the detail pane fits beside │ │621 // it. the box drops the detail pane when the width can't hold both │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯