From 4232a1e2234e1b095e1fe77d4ea02f5125b88217 Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Fri, 14 Aug 2026 23:25:37 +0200 Subject: [PATCH] feat(tui): navigate and confirm while filtering search results In results filter mode, Up/Down move the selection over the filtered list and Enter confirms the filter (keeps the query, returns to normal results keys). Footer hints updated. --- soulseek-rs/src/ui/main_tui/input.rs | 20 ++++++++++++++++++++ soulseek-rs/src/ui/main_tui/render.rs | 2 ++ 2 files changed, 22 insertions(+) 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"),