diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-19 20:44:43 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-19 20:44:44 +0300 |
| commit | a26a654351ee03b1a51d7b398f3bdff2c1ca920d (patch) | |
| tree | 05382168990e4a6f50f6dbb5220c52fad062923d /src/app/input/overlays.rs | |
| parent | 01d371bf7a10330c6a5c139c7df766ae8f6f1cda (diff) | |
feat: connected tree glyphs, workspace grouping, and search auto-select in navigator
refs #1611
Diffstat (limited to 'src/app/input/overlays.rs')
| -rw-r--r-- | src/app/input/overlays.rs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/app/input/overlays.rs b/src/app/input/overlays.rs index 20944080..e9cf3139 100644 --- a/src/app/input/overlays.rs +++ b/src/app/input/overlays.rs @@ -172,9 +172,8 @@ impl App { } MouseEventKind::ScrollUp => { self.state.navigator.scroll = self.state.navigator.scroll.saturating_sub(3); - self.state.navigator.selected = self.state.navigator.scroll; self.state - .clamp_navigator_selection_from(&self.terminal_runtimes); + .align_navigator_selection_to_scroll_from(&self.terminal_runtimes); } MouseEventKind::ScrollDown => { let viewport = self.state.navigator_body_rect().height as usize; @@ -183,9 +182,8 @@ impl App { .navigator_max_scroll_from(&self.terminal_runtimes, viewport); self.state.navigator.scroll = self.state.navigator.scroll.saturating_add(3).min(max); - self.state.navigator.selected = self.state.navigator.scroll; self.state - .clamp_navigator_selection_from(&self.terminal_runtimes); + .align_navigator_selection_to_scroll_from(&self.terminal_runtimes); } _ => {} } @@ -337,11 +335,17 @@ impl AppState { if !rect_contains(body, col, row) { return None; } - let idx = self + let line_idx = self .navigator .scroll .saturating_add(row.saturating_sub(body.y) as usize); - (idx < self.navigator_rows_from(terminal_runtimes).len()).then_some(idx) + let lines = crate::app::state::navigator_display_lines( + &self.navigator_rows_from(terminal_runtimes), + ); + match lines.get(line_idx) { + Some(crate::app::state::NavigatorDisplayLine::Row(idx)) => Some(*idx), + _ => None, + } } pub(crate) fn navigator_row_caret_at(&self, col: u16) -> bool { |
