From 5a56aa0603794d3d9b222113646eab086fcf117c Mon Sep 17 00:00:00 2001 From: Jae-Heon Ji <32578710+jaeheonji@users.noreply.github.com> Date: Mon, 7 Mar 2022 19:20:13 +0900 Subject: [PATCH] Improve: more explicit detach instruction (#1161) * feat: update detach and remove client * chore: apply clippy warning * fix(tests): update snapshot --- ...s__e2e__cases__detach_and_attach_session.snap | 2 +- zellij-server/src/lib.rs | 16 ---------------- zellij-server/src/screen.rs | 12 +++++++----- zellij-server/src/tab/mod.rs | 1 + 4 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap index 5765e54a..59576e22 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap @@ -5,7 +5,7 @@ expression: last_snapshot --- Zellij (e2e-test)  Tab #1  ┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐ -│$ █ ││$ I am some text │ +│$ ││$ I am some text█ │ │ ││ │ │ ││ │ │ ││ │ diff --git a/zellij-server/src/lib.rs b/zellij-server/src/lib.rs index 82f759db..7880d5f9 100644 --- a/zellij-server/src/lib.rs +++ b/zellij-server/src/lib.rs @@ -477,22 +477,6 @@ pub fn start_server(mut os_input: Box, socket_path: PathBuf) { .send_to_screen(ScreenInstruction::TerminalResize(min_size)) .unwrap(); } - session_data - .write() - .unwrap() - .as_ref() - .unwrap() - .senders - .send_to_screen(ScreenInstruction::RemoveClient(client_id)) - .unwrap(); - session_data - .write() - .unwrap() - .as_ref() - .unwrap() - .senders - .send_to_plugin(PluginInstruction::RemoveClient(client_id)) - .unwrap(); } ServerInstruction::Render(serialized_output) => { let client_ids = session_state.read().unwrap().client_ids(); diff --git a/zellij-server/src/screen.rs b/zellij-server/src/screen.rs index 4145e0c2..e9463015 100644 --- a/zellij-server/src/screen.rs +++ b/zellij-server/src/screen.rs @@ -566,12 +566,14 @@ impl Screen { .add_client(client_id, None); } pub fn remove_client(&mut self, client_id: ClientId) { - if let Some(client_tab) = self.get_active_tab_mut(client_id) { - client_tab.remove_client(client_id); - if client_tab.has_no_connected_clients() { - client_tab.visible(false); + self.tabs.iter_mut().for_each(|(_, tab)| { + if tab.active_panes.get(&client_id).is_some() { + tab.remove_client(client_id); + if tab.has_no_connected_clients() { + tab.visible(false); + } } - } + }); if self.active_tab_indices.contains_key(&client_id) { self.active_tab_indices.remove(&client_id); } diff --git a/zellij-server/src/tab/mod.rs b/zellij-server/src/tab/mod.rs index 395d7f4d..34c32c6c 100644 --- a/zellij-server/src/tab/mod.rs +++ b/zellij-server/src/tab/mod.rs @@ -578,6 +578,7 @@ impl Tab { } pub fn remove_client(&mut self, client_id: ClientId) { self.focus_pane_id = None; + self.active_panes.remove(&client_id); self.connected_clients.remove(&client_id); self.set_force_render(); }