aboutsummaryrefslogtreecommitdiff
path: root/src/app/actions.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-15 02:32:52 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-15 02:32:52 +0300
commit88370e1516182ab519d22a12fa82d5780a40fee6 (patch)
treeb07be9b77abe14cdd3c1ff0e9acc1268729d8723 /src/app/actions.rs
parent5d24d0d214d05858e344a9e15a63856dc1328eae (diff)
feat: add isolated pane graphics streaming
Diffstat (limited to 'src/app/actions.rs')
-rw-r--r--src/app/actions.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/app/actions.rs b/src/app/actions.rs
index 7cf43e79..68286952 100644
--- a/src/app/actions.rs
+++ b/src/app/actions.rs
@@ -1490,6 +1490,8 @@ impl AppState {
}
for pane_id in pane_ids {
self.plugin_panes.remove(&pane_id);
+ self.pane_graphics_layers.remove(&pane_id);
+ self.pane_graphics_streams.remove(&pane_id);
}
}
@@ -3113,6 +3115,26 @@ mod tests {
state
}
+ fn insert_test_pane_graphics_layer(state: &mut AppState, pane_id: PaneId) {
+ state.pane_graphics_layers.insert(
+ pane_id,
+ crate::app::state::PaneGraphicsLayer::new(
+ crate::api::schema::PaneGraphicsFormat::Rgba,
+ 1,
+ 1,
+ vec![1, 2, 3, 4],
+ crate::api::schema::PaneGraphicsPlacementParams::default(),
+ ),
+ );
+ }
+
+ fn insert_test_pane_graphics_state(state: &mut AppState, pane_id: PaneId) {
+ insert_test_pane_graphics_layer(state, pane_id);
+ state
+ .pane_graphics_streams
+ .insert(pane_id, "test-stream".into());
+ }
+
fn mark_linked_worktree(state: &mut AppState, ws_idx: usize) {
state.workspaces[ws_idx].worktree_space = Some(crate::workspace::WorktreeSpaceMembership {
key: "repo-key".into(),
@@ -5196,10 +5218,13 @@ mod tests {
entrypoint: "board".into(),
},
);
+ insert_test_pane_graphics_state(&mut state, closed);
state.close_pane();
assert_eq!(state.workspaces[0].panes.len(), 1);
assert!(!state.plugin_panes.contains_key(&closed));
+ assert!(!state.pane_graphics_layers.contains_key(&closed));
+ assert!(!state.pane_graphics_streams.contains_key(&closed));
state.assert_invariants_for_test();
}
@@ -5264,11 +5289,14 @@ mod tests {
entrypoint: "board".into(),
},
);
+ insert_test_pane_graphics_state(&mut state, pane_id);
state.close_tab();
assert!(!state.terminals.contains_key(&terminal_id));
assert!(!state.plugin_panes.contains_key(&pane_id));
+ assert!(!state.pane_graphics_layers.contains_key(&pane_id));
+ assert!(!state.pane_graphics_streams.contains_key(&pane_id));
state.assert_invariants_for_test();
}
@@ -5284,11 +5312,14 @@ mod tests {
entrypoint: "board".into(),
},
);
+ insert_test_pane_graphics_state(&mut state, pane_id);
state.close_selected_workspace();
assert!(!state.terminals.contains_key(&terminal_id));
assert!(!state.plugin_panes.contains_key(&pane_id));
+ assert!(!state.pane_graphics_layers.contains_key(&pane_id));
+ assert!(!state.pane_graphics_streams.contains_key(&pane_id));
state.assert_invariants_for_test();
}