* 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
5 changed files with 110 additions and 4 deletions
|
|
@ -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)
|
* 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: 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)
|
* 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)
|
* fix: change the way sessions are sorted (https://github.com/zellij-org/zellij/pull/1347)
|
||||||
|
|
||||||
## [0.28.1] - 2022-04-13
|
## [0.28.1] - 2022-04-13
|
||||||
|
|
|
||||||
|
|
@ -1749,9 +1749,13 @@ impl Tab {
|
||||||
|
|
||||||
pub fn update_active_pane_name(&mut self, buf: Vec<u8>, client_id: ClientId) {
|
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) {
|
if let Some(active_terminal_id) = self.get_active_terminal_id(client_id) {
|
||||||
let active_terminal = self
|
let active_terminal = if self.are_floating_panes_visible() {
|
||||||
.tiled_panes
|
self.floating_panes
|
||||||
.get_pane_mut(PaneId::Terminal(active_terminal_id))
|
.get_pane_mut(PaneId::Terminal(active_terminal_id))
|
||||||
|
} else {
|
||||||
|
self.tiled_panes
|
||||||
|
.get_pane_mut(PaneId::Terminal(active_terminal_id))
|
||||||
|
}
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
// It only allows printable unicode, delete and backspace keys.
|
// It only allows printable unicode, delete and backspace keys.
|
||||||
|
|
|
||||||
|
|
@ -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);
|
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]
|
#[test]
|
||||||
fn wide_characters_in_left_title_side() {
|
fn wide_characters_in_left_title_side() {
|
||||||
// this test makes sure the title doesn't overflow when it has wide characters
|
// this test makes sure the title doesn't overflow when it has wide characters
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue