aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiro <furtadomiro@gmail.com>2026-07-17 06:10:32 -0700
committerGitHub <noreply@github.com>2026-07-17 15:10:32 +0200
commit4bbafdf58da4fd4b4cce26ca92efdacd674e72fe (patch)
tree2bec4622f8d88d5153d0489a551fa6d686761ee8
parentfix(grid): properly pad rows in CUF (#5377) (diff)
downloadsl0ppij-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.rs1
-rw-r--r--zellij-server/src/tab/unit/tab_tests.rs34
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,