╭ changed ──────╮ │src/ui/Auth.zig│ ╰───────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────╮ │90 return self.focus; │ │91 } │ │92 │ │93 - pub fn getSelectedIndex(self: View) ?usize { │ │94 - if (self.session.data.user_id != null) return self.logout.getSelectedIndex();│ │95 - return self.login.getSelectedIndex(); │ │93 + pub fn atTop(self: View) bool { │ │94 + if (self.session.data.user_id != null) return self.logout.atTop(); │ │95 + return self.login.atTop(); │ │96 } │ │97 }; │ │98 │ ╰─────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Auth/Login.zig│ ╰─────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────╮ │175 return self.center.getFocus(); │ │176 } │ │177 │ │178 - pub fn getSelectedIndex(self: View) ?usize { │ │179 - const child_id = self.center.child.box.focus.child_id orelse return null; │ │180 - return self.indexOf(child_id); │ │178 + pub fn atTop(self: View) bool { │ │179 + return self.center.child.box.focus.child_id == self.nav_ids[username_index];│ │180 } │ │181 │ │182 fn indexOf(self: View, child_id: usize) ?usize { │ ╰─────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Auth/Logout.zig│ ╰──────────────────────╯ ╭─────────────────────────────────────────────────────╮ │111 return self.center.getFocus(); │ │112 } │ │113 │ │114 - pub fn getSelectedIndex(self: View) ?usize {│ │114 + pub fn atTop(self: View) bool { │ │115 _ = self; │ │116 - return 0; │ │116 + return true; │ │117 } │ │118 }; │ │119 │ ╰─────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Fork.zig│ ╰───────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │211 .up => switch (child.*) { │ │212 .fork_header => try child.input(allocator, key, root_focus), │ │213 .stack => if (stack.getSelected()) |selected| { │ │214 - const at_top = switch (selected.*) { │ │215 - .repo_patch_detail => |*view| view.atTop(root_focus), │ │216 - .repo_files => |*view| view.getSelectedIndex() == 0, │ │217 - .repo_commits => |*view| view.getSelectedIndex() == 0, │ │218 - .home_settings => |*view| view.getSelectedIndex() == 0, │ │219 - .home_auth => |*view| view.getSelectedIndex() == 0, │ │220 - .quit => |*view| view.getSelectedIndex() == 0, │ │221 - else => false, │ │222 - }; │ │223 - if (at_top) next_index = header_index else try child.input(allocator, key, root_focus); │ │214 + if (selected.atTop(root_focus)) next_index = header_index else try child.input(allocator, key, root_focus);│ │215 }, │ │216 else => {}, │ │217 }, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Home.zig│ ╰───────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────╮ │138 }, │ │139 .stack => { │ │140 if (child.stack.getSelected()) |selected_widget| { │ │141 - const at_top = switch (selected_widget.*) { │ │142 - .home_users => |*v| v.getSelectedIndex() == 0, │ │143 - .home_repos => |*v| v.getSelectedIndex() == 0, │ │144 - .home_settings => |*v| v.getSelectedIndex() == 0,│ │145 - .home_auth => |*v| v.getSelectedIndex() == 0, │ │146 - .quit => |*v| v.getSelectedIndex() == 0, │ │147 - else => false, │ │148 - }; │ │149 - if (at_top) { │ │141 + if (selected_widget.atTop(root_focus)) { │ │142 index = header_index; │ │143 } else { │ │144 try child.input(allocator, key, root_focus); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Home/Repos.zig│ ╰─────────────────────╯ ╭─────────────────────────────────────────────────────╮ │137 return self.list.getFocus(); │ │138 } │ │139 │ │140 - pub fn getSelectedIndex(self: View) ?usize {│ │141 - return self.list.getSelectedIndex(); │ │140 + pub fn atTop(self: View) bool { │ │141 + return self.list.atTop(); │ │142 } │ │143 }; │ │144 │ ╰─────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Home/Users.zig│ ╰─────────────────────╯ ╭─────────────────────────────────────────────────────╮ │128 return self.list.getFocus(); │ │129 } │ │130 │ │131 - pub fn getSelectedIndex(self: View) ?usize {│ │132 - return self.list.getSelectedIndex(); │ │131 + pub fn atTop(self: View) bool { │ │132 + return self.list.atTop(); │ │133 } │ │134 }; │ │135 │ ╰─────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Quit.zig│ ╰───────────────╯ ╭─────────────────────────────────────────────────────╮ │ 99 return self.center.getFocus(); │ │100 } │ │101 │ │102 - pub fn getSelectedIndex(self: View) ?usize {│ │102 + pub fn atTop(self: View) bool { │ │103 _ = self; │ │104 - return 0; │ │104 + return true; │ │105 } │ │106 }; │ │107 │ ╰─────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Repo.zig│ ╰───────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ │411 }, │ │412 .stack => { │ │413 if (child.stack.getSelected()) |selected_widget| { │ │414 - const at_top = switch (selected_widget.*) { │ │415 - .repo_files => |*v| v.getSelectedIndex() == 0, │ │416 - .repo_commits => |*v| v.getSelectedIndex() == 0, │ │417 - .repo_refs => |*v| v.getSelectedIndex() == 0, │ │418 - .repo_issues => |*v| v.getSelectedIndex() == 0, │ │419 - .repo_patches => |*v| v.getSelectedIndex() == 0, │ │420 - .repo_discussions => |*v| v.getSelectedIndex() == 0,│ │421 - .repo_events => |*v| v.getSelectedIndex() == 0, │ │422 - .home_settings => |*v| v.getSelectedIndex() == 0, │ │423 - .home_auth => |*v| v.getSelectedIndex() == 0, │ │424 - .quit => |*v| v.getSelectedIndex() == 0, │ │425 - else => false, │ │426 - }; │ │427 - if (at_top) { │ │414 + if (selected_widget.atTop(root_focus)) { │ │415 index = header_index; │ │416 } else { │ │417 try child.input(allocator, key, root_focus); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────────────╮ │src/ui/Repo/Commits.zig│ ╰───────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │953 } │ │954 │ │955 // only the clone-url row sits directly below the repository header. │ │956 - pub fn getSelectedIndex(self: *View) ?usize { │ │957 - if (self.headerActive()) return 0; │ │958 - return if (self.header().hasCloneUrl() or !self.contentAtTop()) 1 else 0; │ │956 + pub fn atTop(self: *View) bool { │ │957 + return self.headerActive() or (!self.header().hasCloneUrl() and self.contentAtTop());│ │958 } │ │959 │ │960 pub fn focusCloneUrl(self: *View, root_focus: *Focus) bool { │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯