diff options
| author | miro <furtadomiro@gmail.com> | 2026-07-17 06:10:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-17 15:10:32 +0200 |
| commit | 4bbafdf58da4fd4b4cce26ca92efdacd674e72fe (patch) | |
| tree | 2bec4622f8d88d5153d0489a551fa6d686761ee8 | |
| parent | fix(grid): properly pad rows in CUF (#5377) (diff) | |
| download | sl0ppij-4bbafdf58da4fd4b4cce26ca92efdacd674e72fe.tar.gz sl0ppij-4bbafdf58da4fd4b4cce26ca92efdacd674e72fe.tar.xz sl0ppij-4bbafdf58da4fd4b4cce26ca92efdacd674e72fe.zip | |
fix(panes): clear custom name when renaming (#5369)
| -rw-r--r-- | zellij-server/src/tab/mod.rs | 1 | ||||
| -rw-r--r-- | zellij-server/src/tab/unit/tab_tests.rs | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/zellij-server/src/tab/mod.rs b/zellij-server/src/tab/mod.rs index 488da7a5..26668f82 100644 --- a/zellij-server/src/tab/mod.rs +++ b/zellij-server/src/tab/mod.rs @@ -6140,6 +6140,7 @@ impl Tab { .with_context(|| format!("no active pane found for client {client_id}")) .map(|active_pane| { let to_update = match s { + "\0" => s, // pane name terminator "\u{007F}" | "\u{0008}" => { // delete and backspace keys s diff --git a/zellij-server/src/tab/unit/tab_tests.rs b/zellij-server/src/tab/unit/tab_tests.rs index 11a42e29..1e6d7539 100644 --- a/zellij-server/src/tab/unit/tab_tests.rs +++ b/zellij-server/src/tab/unit/tab_tests.rs @@ -16193,6 +16193,40 @@ pub fn interactive_rename_appends_to_existing_name() { } #[test] +pub fn interactive_rename_nul_clears_existing_name() { + let size = Size { + cols: 121, + rows: 20, + }; + let mut tab = create_new_tab(size, true); + let client_id = 1; + let pane_id = PaneId::Terminal(1); + let _ = tab.rename_pane_by_pane_id(pane_id, "flame".as_bytes().to_vec()); + let _ = tab.update_active_pane_name(vec![0], client_id); + let pane = tab.get_pane_with_id(pane_id).unwrap(); + assert_eq!(pane.custom_title(), None); + + let _ = tab.update_active_pane_name(b"spark".to_vec(), client_id); + let pane = tab.get_pane_with_id(pane_id).unwrap(); + assert_eq!(pane.custom_title(), Some("spark".to_owned())); +} + +#[test] +pub fn interactive_rename_sanitizes_other_control_characters() { + let size = Size { + cols: 121, + rows: 20, + }; + let mut tab = create_new_tab(size, true); + let client_id = 1; + let pane_id = PaneId::Terminal(1); + let _ = tab.rename_pane_by_pane_id(pane_id, "flame".as_bytes().to_vec()); + let _ = tab.update_active_pane_name(vec![0x01, 0x07, b'\n', b'\r', 0x1b], client_id); + let pane = tab.get_pane_with_id(pane_id).unwrap(); + assert_eq!(pane.custom_title(), Some("flame".to_owned())); +} + +#[test] pub fn interactive_rename_backspace_removes_chars() { let size = Size { cols: 121, |
