summaryrefslogtreecommitdiffstats
path: root/zellij-server/src/tab
diff options
context:
space:
mode:
authorraphCode <15750438+raphCode@users.noreply.github.com>2022-04-29 16:16:53 +0200
committerGitHub <noreply@github.com>2022-04-29 16:16:53 +0200
commit1f4e3d88c881e5402339a4a54750f06143f302ab (patch)
treece4d8a988d18040d451490d81468711e1d1abc00 /zellij-server/src/tab
parentb0a29c046a21e3ecb0c59c2f09d693f9f6e99738 (diff)
Fix crash on renaming a floating pane (#1323) (#1357)
* Fix crash on renaming a floating pane (#1323) * Add rename tests for embedded and floating panes * docs(changelog): fix floating pane rename
Diffstat (limited to 'zellij-server/src/tab')
-rw-r--r--zellij-server/src/tab/mod.rs12
-rw-r--r--zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_embedded_pane.snap25
-rw-r--r--zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_floating_pane.snap25
-rw-r--r--zellij-server/src/tab/unit/tab_integration_tests.rs51
4 files changed, 109 insertions, 4 deletions
diff --git a/zellij-server/src/tab/mod.rs b/zellij-server/src/tab/mod.rs
index a32964dec..18eb99f33 100644
--- a/zellij-server/src/tab/mod.rs
+++ b/zellij-server/src/tab/mod.rs
@@ -1749,10 +1749,14 @@ impl Tab {
pub fn update_active_pane_name(&mut self, buf: Vec<u8>, client_id: ClientId) {
if let Some(active_terminal_id) = self.get_active_terminal_id(client_id) {
- let active_terminal = self
- .tiled_panes
- .get_pane_mut(PaneId::Terminal(active_terminal_id))
- .unwrap();
+ let active_terminal = if self.are_floating_panes_visible() {
+ self.floating_panes
+ .get_pane_mut(PaneId::Terminal(active_terminal_id))
+ } else {
+ self.tiled_panes
+ .get_pane_mut(PaneId::Terminal(active_terminal_id))
+ }
+ .unwrap();
// It only allows printable unicode, delete and backspace keys.
let is_updatable = buf.iter().all(|u| matches!(u, 0x20..=0x7E | 0x08 | 0x7F));
diff --git a/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_embedded_pane.snap b/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_embedded_pane.snap
new file mode 100644
index 000000000..a71d4410e
--- /dev/null
+++ b/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_embedded_pane.snap
@@ -0,0 +1,25 @@
+---
+source: zellij-server/src/tab/./unit/tab_integration_tests.rs
+expression: snapshot
+---
+00 (C): ┌ Renamed empedded pane ────────────────────────────────────────────────────────────────────────────────────────────────┐
+01 (C): │ │
+02 (C): │ │
+03 (C): │ │
+04 (C): │ I am an embedded pane │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
+15 (C): │ │
+16 (C): │ │
+17 (C): │ │
+18 (C): │ │
+19 (C): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+
diff --git a/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_floating_pane.snap b/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_floating_pane.snap
new file mode 100644
index 000000000..cb73eb45c
--- /dev/null
+++ b/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__rename_floating_pane.snap
@@ -0,0 +1,25 @@
+---
+source: zellij-server/src/tab/./unit/tab_integration_tests.rs
+expression: snapshot
+---
+00 (C): ┌ Pane #1 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+01 (C): │ │
+02 (C): │ │
+03 (C): │ │
+04 (C): │ │
+05 (C): │ ┌ Renamed floating pane ───────────────────────────────────┐ │
+06 (C): │ │ │ │
+07 (C): │ │ │ │
+08 (C): │ │ │ │
+09 (C): │ │ I am a floating pane │ │
+10 (C): │ │ │ │
+11 (C): │ │ │ │
+12 (C): │ │ │ │
+13 (C): │ │ │ │
+14 (C): │ └──────────────────────────────────────────────────────────┘ │
+15 (C): │ │
+16 (C): │ │
+17 (C): │ │
+18 (C): │ │
+19 (C): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+
diff --git a/zellij-server/src/tab/unit/tab_integration_tests.rs b/zellij-server/src/tab/unit/tab_integration_tests.rs
index 352efadc7..fc35b444a 100644
--- a/zellij-server/src/tab/unit/tab_integration_tests.rs
+++ b/zellij-server/src/tab/unit/tab_integration_tests.rs
@@ -1097,6 +1097,57 @@ fn replacing_existing_wide_characters() {
}
#[test]
+fn rename_embedded_pane() {
+ let size = Size {
+ cols: 121,
+ rows: 20,
+ };
+ let client_id = 1;
+ let mut tab = create_new_tab(size);
+ let mut output = Output::default();
+ tab.handle_pty_bytes(
+ 1,
+ Vec::from("\n\n\n I am an embedded pane".as_bytes()),
+ );
+ tab.update_active_pane_name("Renamed empedded pane".as_bytes().to_vec(), client_id);
+ tab.render(&mut output, None);
+ let snapshot = take_snapshot(
+ output.serialize().get(&client_id).unwrap(),
+ size.rows,
+ size.cols,
+ Palette::default(),
+ );
+ assert_snapshot!(snapshot);
+}
+
+#[test]
+fn rename_floating_pane() {
+ let size = Size {
+ cols: 121,
+ rows: 20,
+ };
+ let client_id = 1;
+ let mut tab = create_new_tab(size);
+ let new_pane_id = PaneId::Terminal(2);
+ let mut output = Output::default();
+ tab.new_pane(new_pane_id, Some(client_id));
+ tab.handle_pty_bytes(
+ 2,
+ Vec::from("\n\n\n I am a floating pane".as_bytes()),
+ );
+ tab.toggle_pane_embed_or_floating(client_id);
+ tab.update_active_pane_name("Renamed floating pane".as_bytes().to_vec(), client_id);
+ tab.render(&mut output, None);
+ let snapshot = take_snapshot(
+ output.serialize().get(&client_id).unwrap(),
+ size.rows,
+ size.cols,
+ Palette::default(),
+ );
+ assert_snapshot!(snapshot);
+}
+
+#[test]
fn wide_characters_in_left_title_side() {
// this test makes sure the title doesn't overflow when it has wide characters
let size = Size {