mirror of
https://github.com/zellij-org/zellij.git
synced 2024-12-24 17:53:36 +03:00
* Fix crash on renaming a floating pane (#1323) * Add rename tests for embedded and floating panes * docs(changelog): fix floating pane rename
This commit is contained in:
parent
b0a29c046a
commit
1f4e3d88c8
@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
* fix: avoid panic in link_handler.rs (https://github.com/zellij-org/zellij/pull/1356)
|
||||
* Terminal compatibility: prevent wide chars from overflowing the title line (https://github.com/zellij-org/zellij/pull/1361)
|
||||
* Terminal compatibility: adjust saved cursor position on resize (https://github.com/zellij-org/zellij/pull/1362)
|
||||
* fix: avoid panic on renaming a floating pane (https://github.com/zellij-org/zellij/pull/1357)
|
||||
* fix: change the way sessions are sorted (https://github.com/zellij-org/zellij/pull/1347)
|
||||
|
||||
## [0.28.1] - 2022-04-13
|
||||
|
@ -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));
|
||||
|
@ -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): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|
@ -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): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|
@ -1096,6 +1096,57 @@ fn replacing_existing_wide_characters() {
|
||||
assert_snapshot!(snapshot);
|
||||
}
|
||||
|
||||
#[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
|
||||
|
Loading…
Reference in New Issue
Block a user