╭ changed ─────────────╮ │src/ui/Repo/Issues.zig│ ╰──────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭────────────────────────────────────────────────────────────────────────────╮ │543 } else { │ │546 - try self.subHeader().input(allocator, key, root_focus);│ │544 + try self.header().input(allocator, key, root_focus); │ │545 } │ │546 return; │ │547 } │ ╰────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │555 } │ │556 │ │557 // arrow keys move the tag selection; up from the top row crosses to the│ │560 - // sub header tabs. │ │558 + // header tabs. │ │559 fn tagsViewInput(self: *View, key: Key, root_focus: *Focus) void { │ │560 const tf = self.tagsView(); │ │561 const cid = tf.focus.child_id orelse return; │ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │564 switch (key) { │ │565 .arrow_left => if (cur > 0) root_focus.setFocus(tf.text_boxes.items[cur - 1].getFocus().id), │ │566 .arrow_right => if (cur + 1 < count) root_focus.setFocus(tf.text_boxes.items[cur + 1].getFocus().id), │ │569 - .arrow_up => if (tf.rowStep(cur, false)) |i| root_focus.setFocus(tf.text_boxes.items[i].getFocus().id) else self.focusSubHeader(root_focus),│ │567 + .arrow_up => if (tf.rowStep(cur, false)) |i| root_focus.setFocus(tf.text_boxes.items[i].getFocus().id) else self.focusHeader(root_focus), │ │568 .arrow_down => if (tf.rowStep(cur, true)) |i| root_focus.setFocus(tf.text_boxes.items[i].getFocus().id), │ │569 .home => root_focus.setFocus(tf.text_boxes.items[0].getFocus().id), │ │570 .end => root_focus.setFocus(tf.text_boxes.items[count - 1].getFocus().id), │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │575 fn listInput(self: *View, key: Key, root_focus: *Focus) !void { │ │576 // up/down (and the scroll wheel) move the selection a row; page up/down │ │577 // jump a fixed amount. right/Enter cross into the detail pane. up from │ │580 - // the top row crosses into the sub header tabs. │ │578 + // the top row crosses into the header tabs. │ │579 if (inp.rowDelta(key, @intCast(self.listBox().children.count()))) |delta| { │ │580 const lb = self.listBox(); │ │581 const at_top = if (lb.getFocus().child_id) |cid| lb.children.getIndex(cid) == 0 else true;│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │584 - if (delta < 0 and at_top) return self.focusSubHeader(root_focus);│ │582 + if (delta < 0 and at_top) return self.focusHeader(root_focus); │ │583 ui.moveRowFocus(lb, self.listScroll(), root_focus, delta); │ │584 return; │ │585 } │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │602 switch (key) { │ │603 .arrow_left => return self.focusList(root_focus), │ │604 // once the scroll can't move further, cross into the tags (or the│ │607 - // sub header tabs when the issue has none). │ │605 + // header tabs when the issue has none). │ │606 .arrow_up => { │ │607 const before = sc.y; │ │608 sc.y -= 1; │ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │609 sc.clampToContent(); │ │610 if (sc.y == before) { │ │613 - if (self.tagFlow() != null) try self.focusTags(root_focus) else self.focusSubHeader(root_focus);│ │611 + if (self.tagFlow() != null) try self.focusTags(root_focus) else self.focusHeader(root_focus); │ │612 } │ │613 return; │ │614 }, │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │637 switch (key) { │ │638 .arrow_left => if (cur > 0) self.focusTag(tf, root_focus, cur - 1) else try self.focusList(root_focus), │ │639 .arrow_right => if (cur + 1 < count) self.focusTag(tf, root_focus, cur + 1), │ │642 - .arrow_up => if (tf.rowStep(cur, false)) |i| self.focusTag(tf, root_focus, i) else self.focusSubHeader(root_focus), │ │640 + .arrow_up => if (tf.rowStep(cur, false)) |i| self.focusTag(tf, root_focus, i) else self.focusHeader(root_focus), │ │641 .arrow_down => if (tf.rowStep(cur, true)) |i| self.focusTag(tf, root_focus, i) else try self.focusDescription(root_focus),│ │642 .home => self.focusTag(tf, root_focus, 0), │ │643 .end => self.focusTag(tf, root_focus, count - 1), │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────╮ │706 root_focus.setFocus(self.listScroll().getFocus().id); │ │707 } │ │708 │ │711 - // cross to the sub header tabs above the split. │ │712 - fn focusSubHeader(self: *View, root_focus: *Focus) void { │ │713 - root_focus.setFocus(self.box.children.keys()[sub_header_index]);│ │709 + // cross to the header tabs above the split. │ │710 + fn focusHeader(self: *View, root_focus: *Focus) void { │ │711 + root_focus.setFocus(self.box.children.keys()[header_index]); │ │712 } │ │713 │ │714 pub fn clearGrid(self: *View) void { │ ╰─────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────╮ │724 } │ │725 │ │726 // for the parent's "scroll up at the top jumps to the header" check: at the│ │729 - // top only while the sub header tabs hold focus, so up from the split │ │727 + // top only while the header tabs hold focus, so up from the split │ │728 // crosses into the tabs first. │ │729 pub fn getSelectedIndex(self: *View) ?usize { │ │732 - return if (self.subHeaderActive()) 0 else 1; │ │730 + return if (self.headerActive()) 0 else 1; │ │731 } │ │732 }; │ │733 │ ╰─────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯