Skip to content

Commit

Permalink
Selecting next/previous item works across pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Bdeering1 committed Jun 13, 2023
1 parent 0f24d4e commit 5e1e4a0
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions src/menu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,19 @@ impl Menu {

match key {
Key::ArrowUp | Key::Char('k') => {
if self.selected_item != self.page_start { self.selected_item -= 1 }
if self.selected_item != self.page_start {
self.selected_item -= 1;
} else if self.selected_page != 0 {
self.set_page(self.selected_page - 1);
self.selected_item = self.page_end;
}
}
Key::ArrowDown | Key::Char('j') => {
if self.selected_item + 1 < self.page_end { self.selected_item += 1 }
if self.selected_item < self.page_end {
self.selected_item += 1
} else if self.selected_page < self.num_pages - 1 {
self.set_page(self.selected_page + 1);
}
}
Key::ArrowLeft | Key::Char('h') => {
if self.selected_page != 0 {
Expand Down Expand Up @@ -170,9 +179,9 @@ impl Menu {
self.page_start = self.selected_page * self.items_per_page;
self.selected_item = self.page_start;
if self.items.len() > self.page_start + self.items_per_page {
self.page_end = self.page_start + self.items_per_page
self.page_end = self.page_start + self.items_per_page - 1
} else {
self.page_end = self.items.len()
self.page_end = self.items.len() - 1
}
}

Expand All @@ -193,9 +202,8 @@ impl Menu {
stdout.write_line(&format!("{}", title_style.apply_to(title))).unwrap();
}

for (i, option) in self.items[self.page_start..self.page_end].iter().enumerate() {
let selected_idx = self.page_start + i;
if selected_idx == self.selected_item {
for (i, option) in self.items[self.page_start..=self.page_end].iter().enumerate() {
if self.page_start + i == self.selected_item {
let style = Style::new().bold();
stdout.write_line(&format!("> {}", style.apply_to(&option.label))).unwrap();
} else {
Expand Down

0 comments on commit 5e1e4a0

Please sign in to comment.