aboutsummaryrefslogtreecommitdiff
path: root/src/app/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-02 01:23:10 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-02 01:23:10 +0300
commit45005f1f733a96e3d9e6748577c01ca2c594304b (patch)
tree58710dd980f8fa42d8df6f0c04290dc5e23c948d /src/app/mod.rs
parent9ae93b125249dead6169bdc505c11e0f43309e40 (diff)
fix: mark visible done panes seen on terminal focus
Diffstat (limited to 'src/app/mod.rs')
-rw-r--r--src/app/mod.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 9e437e62..1a287a38 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -1153,6 +1153,47 @@ mod tests {
}
#[tokio::test]
+ async fn outer_focus_gained_marks_visible_done_panes_seen() {
+ let mut app = test_app();
+ let mut workspace = Workspace::test_new("test");
+ let root_pane = workspace.tabs[0].root_pane;
+ let split_pane = workspace.test_split(ratatui::layout::Direction::Horizontal);
+ let background_tab = workspace.test_add_tab(Some("background"));
+ let background_pane = workspace.tabs[background_tab].root_pane;
+
+ workspace.tabs[0].panes.get_mut(&root_pane).unwrap().state = AgentState::Idle;
+ workspace.tabs[0].panes.get_mut(&root_pane).unwrap().seen = false;
+ workspace.tabs[0].panes.get_mut(&split_pane).unwrap().state = AgentState::Idle;
+ workspace.tabs[0].panes.get_mut(&split_pane).unwrap().seen = false;
+ workspace.tabs[background_tab]
+ .panes
+ .get_mut(&background_pane)
+ .unwrap()
+ .state = AgentState::Idle;
+ workspace.tabs[background_tab]
+ .panes
+ .get_mut(&background_pane)
+ .unwrap()
+ .seen = false;
+
+ app.state.workspaces = vec![workspace];
+ app.state.active = Some(0);
+ app.state.selected = 0;
+ app.state.mode = Mode::Terminal;
+ app.state.outer_terminal_focus = Some(false);
+
+ let handled = app
+ .handle_raw_input_event(crate::raw_input::RawInputEvent::OuterFocusGained)
+ .await;
+
+ assert!(handled);
+ assert_eq!(app.state.outer_terminal_focus, Some(true));
+ assert!(app.state.workspaces[0].tabs[0].panes[&root_pane].seen);
+ assert!(app.state.workspaces[0].tabs[0].panes[&split_pane].seen);
+ assert!(!app.state.workspaces[0].tabs[background_tab].panes[&background_pane].seen);
+ }
+
+ #[tokio::test]
async fn repeat_key_events_are_ignored_outside_terminal_mode() {
let mut app = test_app();
app.state.mode = Mode::ReleaseNotes;