diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-17 16:08:43 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-17 16:08:43 +0300 |
| commit | 54490254f70469cd154ee630bc4bec84da178f0c (patch) | |
| tree | 450bf0397398b28932f636d33e37f73c011dd19d /src/app/input | |
| parent | d998753efe506a04c80306795efc72bff60bb0ec (diff) | |
feat: sort agent panel by priority
refs #318
Diffstat (limited to 'src/app/input')
| -rw-r--r-- | src/app/input/mod.rs | 7 | ||||
| -rw-r--r-- | src/app/input/mouse.rs | 10 | ||||
| -rw-r--r-- | src/app/input/sidebar.rs | 21 |
3 files changed, 14 insertions, 24 deletions
diff --git a/src/app/input/mod.rs b/src/app/input/mod.rs index cb4b0d46..5760c436 100644 --- a/src/app/input/mod.rs +++ b/src/app/input/mod.rs @@ -256,7 +256,7 @@ impl App { let handled_pane_double_click = self.handle_pane_double_click(mouse); - let previous_agent_panel_scope = self.state.agent_panel_scope; + let previous_agent_panel_sort = self.state.agent_panel_sort; let previous_settings_section = self.state.settings.section; if !handled_pane_double_click { if let Some(action) = self.state.handle_mouse(&mut self.terminal_runtimes, mouse) { @@ -286,8 +286,8 @@ impl App { { self.refresh_integration_recommendations(); } - if self.state.agent_panel_scope != previous_agent_panel_scope { - self.save_agent_panel_scope(self.state.agent_panel_scope); + if self.state.agent_panel_sort != previous_agent_panel_sort { + self.save_agent_panel_sort(self.state.agent_panel_sort); } if let Some(content) = self.state.request_clipboard_write.take() { @@ -590,7 +590,6 @@ fn capture_snapshot(state: &AppState) -> crate::persist::SessionSnapshot { &terminal_runtimes, state.active, state.selected, - state.agent_panel_scope, state.sidebar_width, state.sidebar_section_split, state.collapsed_space_keys.clone(), diff --git a/src/app/input/mouse.rs b/src/app/input/mouse.rs index 2e2a94aa..41bb5267 100644 --- a/src/app/input/mouse.rs +++ b/src/app/input/mouse.rs @@ -5,7 +5,7 @@ use tracing::warn; use crate::{ app::state::{ - AgentPanelScope, AppState, ContextMenuKind, ContextMenuState, DragState, DragTarget, + AgentPanelSort, AppState, ContextMenuKind, ContextMenuState, DragState, DragTarget, MenuListState, Mode, RightClickPassthroughGesture, TabPressState, ViewLayout, WorkspacePressState, }, @@ -540,10 +540,10 @@ impl AppState { return None; } - if self.on_agent_panel_scope_toggle(mouse.column, mouse.row) { - self.agent_panel_scope = match self.agent_panel_scope { - AgentPanelScope::CurrentWorkspace => AgentPanelScope::AllWorkspaces, - AgentPanelScope::AllWorkspaces => AgentPanelScope::CurrentWorkspace, + if self.on_agent_panel_sort_toggle(mouse.column, mouse.row) { + self.agent_panel_sort = match self.agent_panel_sort { + AgentPanelSort::Spaces => AgentPanelSort::Priority, + AgentPanelSort::Priority => AgentPanelSort::Spaces, }; self.agent_panel_scroll = 0; self.mark_session_dirty(); diff --git a/src/app/input/sidebar.rs b/src/app/input/sidebar.rs index 3ab5f8f5..fd631cd4 100644 --- a/src/app/input/sidebar.rs +++ b/src/app/input/sidebar.rs @@ -432,7 +432,7 @@ impl AppState { best.map(|(insert_idx, _)| insert_idx) } - pub(super) fn on_agent_panel_scope_toggle(&self, col: u16, row: u16) -> bool { + pub(super) fn on_agent_panel_sort_toggle(&self, col: u16, row: u16) -> bool { if self.sidebar_collapsed { return false; } @@ -441,7 +441,7 @@ impl AppState { self.view.sidebar_rect, self.sidebar_section_split, ); - let rect = crate::ui::agent_panel_toggle_rect(detail_area, self.agent_panel_scope); + let rect = crate::ui::agent_panel_toggle_rect(detail_area, self.agent_panel_sort); rect.width > 0 && col >= rect.x && col < rect.x + rect.width @@ -496,7 +496,7 @@ mod tests { use super::super::{app_for_mouse_test, capture_snapshot, mouse, unique_temp_path}; use crate::{ - app::state::{AgentPanelScope, DragTarget, Mode}, + app::state::{AgentPanelSort, DragTarget, Mode}, detect::Agent, workspace::Workspace, }; @@ -711,7 +711,7 @@ mod tests { } #[test] - fn clicking_agent_panel_toggle_switches_scope() { + fn clicking_agent_panel_toggle_switches_sort() { let mut app = app_for_mouse_test(); app.state.workspaces = vec![Workspace::test_new("test")]; app.state.active = Some(0); @@ -723,23 +723,15 @@ mod tests { app.state.view.sidebar_rect, app.state.sidebar_section_split, ); - let toggle = crate::ui::agent_panel_toggle_rect(detail_area, app.state.agent_panel_scope); + let toggle = crate::ui::agent_panel_toggle_rect(detail_area, app.state.agent_panel_sort); app.handle_mouse(mouse( MouseEventKind::Down(MouseButton::Left), toggle.x, toggle.y, )); - assert_eq!( - app.state.agent_panel_scope, - AgentPanelScope::CurrentWorkspace - ); + assert_eq!(app.state.agent_panel_sort, AgentPanelSort::Priority); assert_eq!(app.state.agent_panel_scroll, 0); - let snapshot = capture_snapshot(&app.state); - assert_eq!( - snapshot.agent_panel_scope, - AgentPanelScope::CurrentWorkspace - ); } #[test] @@ -772,7 +764,6 @@ mod tests { app.state.active = Some(0); app.state.selected = 0; app.state.mode = Mode::Terminal; - app.state.agent_panel_scope = AgentPanelScope::AllWorkspaces; let (_, detail_area) = crate::ui::expanded_sidebar_sections( app.state.view.sidebar_rect, |
