aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/headless/client_views.rs1
-rw-r--r--src/server/headless/tests/pane_move.rs10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/server/headless/client_views.rs b/src/server/headless/client_views.rs
index bb697b9a..d6030f74 100644
--- a/src/server/headless/client_views.rs
+++ b/src/server/headless/client_views.rs
@@ -230,6 +230,7 @@ impl HeadlessServer {
Method::CommandInvoke(_)
| Method::PaneClose(_)
| Method::PaneEditScrollback(_)
+ | Method::PaneMove(_)
| Method::PaneSplit(_)
| Method::TabClose(_)
| Method::TabCreate(_)
diff --git a/src/server/headless/tests/pane_move.rs b/src/server/headless/tests/pane_move.rs
index 93bff0c9..c18d0f1f 100644
--- a/src/server/headless/tests/pane_move.rs
+++ b/src/server/headless/tests/pane_move.rs
@@ -185,6 +185,7 @@ async fn public_pane_move_without_effective_focus_preserves_client_views() {
let remaining_tab = server.app.public_tab_id(0, 1).unwrap();
let destination_tab = server.app.public_tab_id(1, 0).unwrap();
let (_control, _render) = connect_test_shell(&mut server, 9, 80, 23);
+ let (_source_control, _source_render) = connect_test_shell(&mut server, 10, 80, 23);
// Keep a valid view distinct from the server default in every case.
assert!(server.focus_shell_client_on_tab(9, &remaining_tab));
let location_before = server.clients[&9].shell_location.clone();
@@ -221,6 +222,15 @@ async fn public_pane_move_without_effective_focus_preserves_client_views() {
"{case}"
);
assert_eq!(server.app.state.active, Some(0));
+ if case == "no-focus" {
+ // A later change to the server default must not move this client.
+ server.app.state.switch_workspace_tab(1, 0);
+ assert_eq!(
+ server.shell_tab_id_for_client(10).as_deref(),
+ Some(remaining_tab.as_str()),
+ "the removed source tab must be reconciled to the remaining source tab"
+ );
+ }
shutdown_test_runtimes(&mut server);
}
}