╭ changed ──────╮ │src/ui/Home.zig│ ╰───────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭─────────────────────────────────────────────────────╮ │30 arena: *std.heap.ArenaAllocator, │ │31 session: *ui.Session, │ │32 haxy_moment: evt.AdminDB.HashMap(.read_only),│ │33 - // pagination window start for the users tab │ │34 - users_start: usize, │ │33 + // the users tab's window and search │ │34 + users_route: ui.RoutablePage.HomeUsersRoute, │ │35 ) !Self { │ │36 const about = try About.init(arena, session);│ │37 return .{ │ ╰─────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────╮ │38 .header = try Header.init(arena, about.title), │ │39 .about = about, │ │40 - .users = try Users.init(arena, haxy_moment, users_start),│ │40 + .users = try Users.init(arena, haxy_moment, users_route),│ │41 .settings = Settings.init(), │ │42 .auth = Auth.init(), │ │43 .quit = Quit.init(), │ ╰─────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │73 } │ │74 │ │75 { │ │76 - var users_view = try Users.View.init(allocator, &data.users, !session.is_terminal); │ │76 + var users_view = try Users.View.init(allocator, &data.users, session); │ │77 errdefer users_view.deinit(allocator); │ │78 try stack.children.put(allocator, users_view.getFocus().id, .{ .home_users = users_view });│ │79 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │104 var self = View{ │ │105 .box = box, │ │106 }; │ │107 - self.getFocus().child_id = box.children.keys()[header_index]; │ │107 + // search results open in the tab's own search box │ │108 + self.getFocus().child_id = box.children.keys()[if (data.users.search != null) stack_index else header_index];│ │109 return self; │ │110 } │ │111 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮ │125 } │ │126 │ │127 pub fn input(self: *View, allocator: std.mem.Allocator, key: Key, root_focus: *Focus) !void {│ │128 + const stack = &self.box.children.values()[stack_index].widget.stack; │ │129 if (self.getFocus().child_id) |child_id| { │ │130 if (self.box.children.getIndex(child_id)) |current_index| { │ │131 const child = &self.box.children.values()[current_index].widget; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │154 .down => { │ │155 switch (child.*) { │ │156 .home_header => { │ │157 + if (stack.getSelected()) |selected_widget| switch (selected_widget.*) {│ │158 + .home_users => |*v| return v.focusHeader(root_focus), │ │159 + else => {}, │ │160 + }; │ │161 index = stack_index; │ │162 }, │ │163 .stack => { │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯