Fix selection bug on search

This commit is contained in:
afonsofrancof 2024-07-30 22:46:26 +01:00
parent 847e09b637
commit e85cc943b3
No known key found for this signature in database
2 changed files with 20 additions and 13 deletions

View File

@ -238,6 +238,13 @@ impl CustomList {
} }
} }
/// Resets the selection to the first item
pub fn reset_selection(&mut self) {
if !self.filtered_items.is_empty() {
self.list_state.select(Some(0));
}
}
/// Handle key events, we are only interested in `Press` and `Repeat` events /// Handle key events, we are only interested in `Press` and `Repeat` events
pub fn handle_key(&mut self, event: KeyEvent, state: &AppState) -> Option<Command> { pub fn handle_key(&mut self, event: KeyEvent, state: &AppState) -> Option<Command> {
if event.kind == KeyEventKind::Release { if event.kind == KeyEventKind::Release {
@ -325,7 +332,7 @@ impl CustomList {
self.filtered_items.len() self.filtered_items.len()
}; };
if let Some(curr_selection) = self.list_state.selected() { let curr_selection = self.list_state.selected().unwrap();
if self.at_root() { if self.at_root() {
self.list_state self.list_state
.select(Some((curr_selection + 1).min(count - 1))); .select(Some((curr_selection + 1).min(count - 1)));
@ -335,9 +342,6 @@ impl CustomList {
self.list_state self.list_state
.select(Some((curr_selection + 1).min(count))); .select(Some((curr_selection + 1).min(count)));
} }
} else if count > 0 {
self.list_state.select(Some(0));
}
} }
/// Scroll the preview window down /// Scroll the preview window down

View File

@ -162,7 +162,10 @@ fn run<B: Backend>(terminal: &mut Terminal<B>, state: &AppState) -> io::Result<(
search_input = String::new(); search_input = String::new();
in_search_mode = false in_search_mode = false
} }
KeyCode::Enter => in_search_mode = false, KeyCode::Enter => {
in_search_mode = false;
custom_list.reset_selection();
}
_ => {} _ => {}
} }
} else if let Some(cmd) = custom_list.handle_key(key, state) { } else if let Some(cmd) = custom_list.handle_key(key, state) {