diff --git a/soulseek-rs/src/ui/main_tui/input.rs b/soulseek-rs/src/ui/main_tui/input.rs index 82333ec..4be6277 100644 --- a/soulseek-rs/src/ui/main_tui/input.rs +++ b/soulseek-rs/src/ui/main_tui/input.rs @@ -285,6 +285,26 @@ impl MainTui { self.state.results_filter_query.pop(); self.apply_filter(); } + // Confirm the filter: leave typing mode but keep the query, so + // the normal Results keys (j/k, space, enter) act on the + // filtered list. + KeyCode::Enter => { + self.state.results_is_filtering = false; + } + KeyCode::Up => { + cycle( + &mut self.state.results_table_state, + self.state.results_filtered_items.len(), + false, + ); + } + KeyCode::Down => { + cycle( + &mut self.state.results_table_state, + self.state.results_filtered_items.len(), + true, + ); + } _ => {} } } diff --git a/soulseek-rs/src/ui/main_tui/render.rs b/soulseek-rs/src/ui/main_tui/render.rs index 45301bb..027c433 100644 --- a/soulseek-rs/src/ui/main_tui/render.rs +++ b/soulseek-rs/src/ui/main_tui/render.rs @@ -372,6 +372,8 @@ impl MainTui { FocusedPane::Results if self.state.results_is_filtering => { vec![ ("Type", "filter"), + ("↑/↓", "navigate"), + ("Enter", "confirm"), ("Esc", "clear filter"), ("1-3", "focus pane"), ("q", "quit"),