aboutsummaryrefslogtreecommitdiff
path: root/src/app/input
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-17 16:08:43 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-17 16:08:43 +0300
commit54490254f70469cd154ee630bc4bec84da178f0c (patch)
tree450bf0397398b28932f636d33e37f73c011dd19d /src/app/input
parentd998753efe506a04c80306795efc72bff60bb0ec (diff)
feat: sort agent panel by priority
refs #318
Diffstat (limited to 'src/app/input')
-rw-r--r--src/app/input/mod.rs7
-rw-r--r--src/app/input/mouse.rs10
-rw-r--r--src/app/input/sidebar.rs21
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,