╭ changed ───────────╮ │src/ui/Repo/Refs.zig│ ╰────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │141 pub const View = struct { │ │142 // a vertical box: the search sub-header above a horizontal box of two │ │143 // columns. each column is a fixed label above a │ │144 - // Scroll of a TagFlow, so the names wrap across the column and scroll │ │144 + // Scroll of a WordFlow, so the names wrap across the column and scroll │ │145 // beneath the label. focus points at the header or the active column and,│ │146 // in its flow, the selected name. │ │147 box: wgt.Box(ui.Widget), │ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │235 // navigation brackets them: "← previous" off the first window, "next →" │ │236 // when more remain, each a full reload. │ │237 { │ │238 - var items: std.ArrayList(ui.widget.TagFlow.Item) = .empty; │ │238 + var items: std.ArrayList(ui.widget.WordFlow.Item) = .empty; │ │239 defer items.deinit(allocator); │ │240 if (data.prev) |p| try items.append(allocator, .{ .text = "← previous", .link = try windowLink(session.page_arena, identity, kind, p, search) });│ │241 for (data.names) |name| try items.append(allocator, .{ .text = name, .link = try refLink(session.page_arena, identity, kind, name) }); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │242 if (data.next) |n| try items.append(allocator, .{ .text = "next →", .link = try windowLink(session.page_arena, identity, kind, n, search) }); │ │243 │ │244 var scroll = blk: { │ │245 - var flow = try ui.widget.TagFlow.init(allocator); │ │245 + var flow = try ui.widget.WordFlow.init(allocator); │ │246 errdefer flow.deinit(allocator); │ │247 try flow.setItems(allocator, items.items); │ │248 - break :blk try wgt.Scroll(ui.Widget).init(allocator, .{ .tag_flow = flow }, .{ .direction = .vert, .web_native = !session.is_terminal, .fill = true }); │ │248 + break :blk try wgt.Scroll(ui.Widget).init(allocator, .{ .word_flow = flow }, .{ .direction = .vert, .web_native = !session.is_terminal, .fill = true });│ │249 }; │ │250 errdefer scroll.deinit(allocator); │ │251 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │364 return &self.columns().children.values()[index].widget.box.children.values()[1].widget.scroll;│ │365 } │ │366 │ │367 - fn flowAt(self: *View, index: usize) *ui.widget.TagFlow { │ │368 - return &self.scrollAt(index).child.tag_flow; │ │367 + fn flowAt(self: *View, index: usize) *ui.widget.WordFlow { │ │368 + return &self.scrollAt(index).child.word_flow; │ │369 } │ │370 │ │371 - fn rowStart(flow: *ui.widget.TagFlow, item: usize) bool { │ │371 + fn rowStart(flow: *ui.widget.WordFlow, item: usize) bool { │ │372 const rects = flow.rects.items; │ │373 return item == 0 or rects[item - 1].y != rects[item].y; │ │374 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────╮ │375 │ │376 - fn rowEnd(flow: *ui.widget.TagFlow, item: usize) bool { │ │376 + fn rowEnd(flow: *ui.widget.WordFlow, item: usize) bool { │ │377 const rects = flow.rects.items; │ │378 return item + 1 == rects.len or rects[item + 1].y != rects[item].y;│ │379 } │ ╰────────────────────────────────────────────────────────────────────────────────╯