diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-04 23:28:36 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-04 23:29:08 +0300 |
| commit | 6b3f6462810e400fbbfbc21240b677732b0549ec (patch) | |
| tree | 67596cbf125f56dad39f22d35c4598a5463367da /src/app/input/overlays.rs | |
| parent | 9b2749776a97bf373e50819dd8a66f290e421551 (diff) | |
fix: use live workspace labels in navigator
refs #377
Diffstat (limited to 'src/app/input/overlays.rs')
| -rw-r--r-- | src/app/input/overlays.rs | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/src/app/input/overlays.rs b/src/app/input/overlays.rs index 423334b9..20944080 100644 --- a/src/app/input/overlays.rs +++ b/src/app/input/overlays.rs @@ -126,9 +126,14 @@ impl App { if self.state.mode == Mode::Navigator { match mouse.kind { MouseEventKind::Moved => { - if let Some(idx) = self.state.navigator_row_index_at(mouse.column, mouse.row) { + if let Some(idx) = self.state.navigator_row_index_at_from( + &self.terminal_runtimes, + mouse.column, + mouse.row, + ) { self.state.navigator.selected = idx; - self.state.ensure_navigator_selection_visible(); + self.state + .ensure_navigator_selection_visible_from(&self.terminal_runtimes); } } MouseEventKind::Down(MouseButton::Left) => { @@ -137,23 +142,29 @@ impl App { .navigator_search_contains(mouse.column, mouse.row) { self.state.navigator.search_focused = true; - } else if let Some(idx) = - self.state.navigator_row_index_at(mouse.column, mouse.row) - { + } else if let Some(idx) = self.state.navigator_row_index_at_from( + &self.terminal_runtimes, + mouse.column, + mouse.row, + ) { self.state.navigator.selected = idx; let target = self .state - .navigator_rows() + .navigator_rows_from(&self.terminal_runtimes) .get(idx) .map(|row| (row.target.clone(), row.is_workspace)); if let Some((NavigatorTarget::Workspace { .. }, true)) = target { if self.state.navigator_row_caret_at(mouse.column) { - self.state.toggle_selected_navigator_workspace(); + self.state.toggle_selected_navigator_workspace_from( + &self.terminal_runtimes, + ); } else { - self.state.accept_navigator_selection(); + self.state + .accept_navigator_selection_from(&self.terminal_runtimes); } } else { - self.state.accept_navigator_selection(); + self.state + .accept_navigator_selection_from(&self.terminal_runtimes); } } else if !self.state.navigator_popup_contains(mouse.column, mouse.row) { leave_modal(&mut self.state); @@ -162,15 +173,19 @@ 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(); + self.state + .clamp_navigator_selection_from(&self.terminal_runtimes); } MouseEventKind::ScrollDown => { let viewport = self.state.navigator_body_rect().height as usize; - let max = self.state.navigator_max_scroll(viewport); + let max = self + .state + .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(); + self.state + .clamp_navigator_selection_from(&self.terminal_runtimes); } _ => {} } @@ -312,7 +327,12 @@ impl AppState { rect_contains(self.navigator_search_rect(), col, row) } - pub(crate) fn navigator_row_index_at(&self, col: u16, row: u16) -> Option<usize> { + pub(crate) fn navigator_row_index_at_from( + &self, + terminal_runtimes: &crate::terminal::TerminalRuntimeRegistry, + col: u16, + row: u16, + ) -> Option<usize> { let body = self.navigator_body_rect(); if !rect_contains(body, col, row) { return None; @@ -321,7 +341,7 @@ impl AppState { .navigator .scroll .saturating_add(row.saturating_sub(body.y) as usize); - (idx < self.navigator_rows().len()).then_some(idx) + (idx < self.navigator_rows_from(terminal_runtimes).len()).then_some(idx) } pub(crate) fn navigator_row_caret_at(&self, col: u16) -> bool { |
