aboutsummaryrefslogtreecommitdiff
path: root/src/app/actions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/actions.rs')
-rw-r--r--src/app/actions.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/app/actions.rs b/src/app/actions.rs
index eccc8d4d..e5742534 100644
--- a/src/app/actions.rs
+++ b/src/app/actions.rs
@@ -5,7 +5,9 @@ use tracing::{info, warn};
use crate::detect::{Agent, AgentState};
use crate::events::AppEvent;
-use crate::layout::{find_in_direction, NavDirection, PaneId};
+use crate::layout::PaneId;
+#[cfg(test)]
+use crate::layout::{find_in_direction, NavDirection};
use crate::selection::Selection;
use crate::terminal::{EffectiveStateChange, TerminalStateMutation};
use crate::workspace::WorkspaceGitStatus;
@@ -1083,6 +1085,7 @@ impl AppState {
.min(crate::ui::mobile_switcher_max_scroll(self));
}
+ #[cfg(test)]
pub fn switch_tab(&mut self, idx: usize) {
if let Some(ws_idx) = self.active {
let previous_focus = self.current_pane_focus_target();
@@ -1167,6 +1170,7 @@ impl AppState {
}
}
+ #[cfg(test)]
pub fn next_workspace(&mut self) {
if self.workspaces.is_empty() {
return;
@@ -1178,6 +1182,7 @@ impl AppState {
self.switch_workspace(next);
}
+ #[cfg(test)]
pub fn previous_workspace(&mut self) {
if self.workspaces.is_empty() {
return;
@@ -1238,6 +1243,7 @@ impl AppState {
self.refresh_tab_bar_view();
}
+ #[cfg(test)]
pub fn next_tab(&mut self) {
if let Some(ws) = self.active.and_then(|i| self.workspaces.get(i)) {
if !ws.tabs.is_empty() {
@@ -1247,6 +1253,7 @@ impl AppState {
}
}
+ #[cfg(test)]
pub fn previous_tab(&mut self) {
if let Some(ws) = self.active.and_then(|i| self.workspaces.get(i)) {
if !ws.tabs.is_empty() {
@@ -1260,14 +1267,17 @@ impl AppState {
}
}
+ #[cfg(test)]
pub fn next_agent(&mut self) {
self.cycle_agent_entry(true);
}
+ #[cfg(test)]
pub fn previous_agent(&mut self) {
self.cycle_agent_entry(false);
}
+ #[cfg(test)]
pub fn focus_agent_entry(&mut self, idx: usize) -> bool {
let entries = crate::ui::agent_panel_entries(self);
let Some(target) = entries.get(idx) else {
@@ -1289,6 +1299,7 @@ impl AppState {
false
}
+ #[cfg(test)]
fn cycle_agent_entry(&mut self, forward: bool) {
let entries = crate::ui::agent_panel_entries(self);
if entries.is_empty() {
@@ -1536,6 +1547,7 @@ pub(crate) struct PaneZoomOutcome {
}
impl AppState {
+ #[cfg(test)]
pub fn navigate_pane(&mut self, direction: NavDirection) {
let Some(ws_idx) = self.active else {
return;
@@ -1556,6 +1568,7 @@ impl AppState {
}
}
+ #[cfg(test)]
pub fn swap_pane(&mut self, direction: NavDirection) -> bool {
let Some(ws_idx) = self.active else {
return false;
@@ -1610,6 +1623,7 @@ impl AppState {
}
}
+ #[cfg(test)]
pub fn cycle_pane(&mut self, reverse: bool) {
let Some(ws_idx) = self.active else {
return;
@@ -1628,6 +1642,7 @@ impl AppState {
}
}
+ #[cfg(test)]
pub fn last_pane(&mut self) {
let Some(target) = self.previous_pane_focus.clone() else {
return;
@@ -1708,6 +1723,7 @@ impl AppState {
})
}
+ #[cfg(test)]
pub fn toggle_zoom(&mut self) {
let Some(ws_idx) = self.active else {
return;
@@ -1749,6 +1765,7 @@ impl AppState {
}
}
+ #[cfg(test)]
fn close_focused_pane_would_close_workspace(&self, ws_idx: usize) -> bool {
self.workspaces.get(ws_idx).is_some_and(|ws| {
let pane_count = ws
@@ -1767,6 +1784,7 @@ impl AppState {
})
}
+ #[cfg(test)]
/// Close the focused pane. Returns true when the close was deferred to confirmation.
pub fn close_pane(&mut self) -> bool {
let active = self.active;
@@ -1812,6 +1830,7 @@ impl AppState {
false
}
+ #[cfg(test)]
/// Close the active tab. Returns true when the close was deferred to confirmation.
pub fn close_tab(&mut self) -> bool {
if self.active.is_some_and(|ws_idx| {