╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ──────────────╮ │src/ui/Repo/Patches.zig│ ╰───────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │616 } │ │617 │ │618 for (fields[0..field_count], 0..) |field, i| { │ │619 - var copyable_text = try ui.CopyableText.View.init(allocator, session, &.{field}); │ │619 + var copyable_text = try ui.widget.CopyableText.init(allocator, session, &.{field}); │ │620 errdefer copyable_text.deinit(allocator); │ │621 try box.children.put(allocator, copyable_text.getFocus().id, .{ .widget = .{ .copyable_text = copyable_text }, .rect = null, .min_size = null });│ │622 if (i + 1 < field_count) try addDetailGap(allocator, box); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │625 } │ │626 │ │627 fn addDetailGap(allocator: std.mem.Allocator, box: *wgt.Box(ui.Widget)) !void { │ │628 - var spacer = try ui.Spacer.init(allocator); │ │628 + var spacer = try ui.widget.Spacer.init(allocator); │ │629 errdefer spacer.deinit(allocator); │ │630 try box.children.put(allocator, spacer.getFocus().id, .{ .widget = .{ .spacer = spacer }, .rect = null, .min_size = .{ .width = null, .height = 1 }, .max_size = .{ .width = null, .height = 1 } });│ │631 } │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ───────────╮ │src/ui/Repo/Refs.zig│ ╰────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │283 // focus to the header. │ │284 if (inp.rowDelta(key, self.columnRowCount())) |delta| { │ │285 const scroll = self.activeScroll() orelse return; │ │286 - ui.moveRowFocus(&scroll.child.box, scroll, root_focus, delta); │ │286 + ui.widget.moveRowFocus(&scroll.child.box, scroll, root_focus, delta);│ │287 return; │ │288 } │ │289 switch (key) { │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭ removed ──────────────╮ │src/ui/Repo/Threads.zig│ ╰───────────────────────╯ ╭ changed ──────────╮ │src/ui/Settings.zig│ ╰───────────────────╯ ╭──────────────────────────────────────────────────────╮ │20 // the shown view │ │21 focus: *Focus, │ │22 // the settings controls, shown when logged in│ │23 - authorized: ui.Center, │ │23 + authorized: ui.widget.Center, │ │24 unauthorized: ui.Unauthorized.View, │ │25 session: *ui.Session, │ │26 button_id: usize, │ ╰──────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │46 } │ │47 │ │48 box.getFocus().child_id = button_id; │ │49 - break :blk try ui.Center.init(allocator, .{ .box = box }); │ │49 + break :blk try ui.widget.Center.init(allocator, .{ .box = box });│ │50 }; │ │51 errdefer authorized.deinit(allocator); │ │52 │ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────────────╮ │src/ui/Unauthorized.zig│ ╰───────────────────────╯ ╭─────────────────────────────────────────────────────────────╮ │16 │ │17 // shown in place of a view that requires being logged in│ │18 pub const View = struct { │ │19 - center: ui.Center, │ │19 + center: ui.widget.Center, │ │20 │ │21 const message = │ │22 \\you must be logged in to view this. │ ╰─────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │31 pub fn init(allocator: std.mem.Allocator) !View { │ │32 var text_box = try wgt.TextBox(ui.Widget).init(allocator, message, .{ .border_style = null, .rounded_corners = false, .wrap_kind = .word });│ │33 errdefer text_box.deinit(allocator); │ │34 - return .{ .center = try ui.Center.init(allocator, .{ .text_box = text_box }) }; │ │34 + return .{ .center = try ui.widget.Center.init(allocator, .{ .text_box = text_box }) }; │ │35 } │ │36 │ │37 pub fn deinit(self: *View, allocator: std.mem.Allocator) void { │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/User.zig│ ╰───────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │181 │ │182 // repos list — the default tab │ │183 { │ │184 - var list = try ui.FlowBox.Scroll.init(allocator, .{}, !session.is_terminal); │ │184 + var list = try ui.widget.FlowBox.Scroll.init(allocator, .{}, !session.is_terminal);│ │185 errdefer list.deinit(allocator); │ │186 │ │187 var arena = std.heap.ArenaAllocator.init(allocator); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │191 // a leading "previous" row off the first window, one row per repo, │ │192 // then a trailing "next" row when more remain. each window row │ │193 // navigates to the adjacent window of this user's repos. │ │194 - var items: std.ArrayList(ui.FlowBox.Item) = .empty; │ │194 + var items: std.ArrayList(ui.widget.FlowBox.Item) = .empty; │ │195 if (data.repos_start > 0) │ │196 try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:/user/{s}/repos/start:{d}", .{ data.user.name, data.repos_start -| page_size }) });│ │197 for (data.repos) |repo| │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯