Fix title widechar overflow (#1361)
* fix(ui): make sure wide characters don't cause a title overflow * style(fmt): rustfmt
This commit is contained in:
parent
8984d1eef6
commit
640d1058a4
5 changed files with 81 additions and 6 deletions
2
src/tests/fixtures/title-wide-chars
vendored
Normal file
2
src/tests/fixtures/title-wide-chars
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
]0;Remixed by BEMANI Sound Team 'TAG feat. PON' - 新宝島\
|
||||||
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
---
|
---
|
||||||
source: zellij-server/src/tab/./unit/tab_integration_tests.rs
|
source: zellij-server/src/tab/./unit/tab_integration_tests.rs
|
||||||
|
assertion_line: 1096
|
||||||
expression: snapshot
|
expression: snapshot
|
||||||
|
|
||||||
---
|
---
|
||||||
00 (C): ┌ Remixed by BEMANI Sound Team 'TAG feat. PON' - 新宝島 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
00 (C): ┌ Remixed by BEMANI Sound Team 'TAG feat. PON' - 新宝島 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
01 (C): │0:14/1:59 ──┤ 新宝島 ├── Vol: 39%│
|
01 (C): │0:14/1:59 ──┤ 新宝島 ├── Vol: 39%│
|
||||||
02 (C): │[playing] Remixed by BEMANI Sound Team 'TAG feat. PON' - beatmania IIDX 28 BISTROVER Original Soundtrack (Disc2) (2021) [------]│
|
02 (C): │[playing] Remixed by BEMANI Sound Team 'TAG feat. PON' - beatmania IIDX 28 BISTROVER Original Soundtrack (Disc2) (2021) [------]│
|
||||||
03 (C): │────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
|
03 (C): │────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
source: zellij-server/src/tab/./unit/tab_integration_tests.rs
|
||||||
|
assertion_line: 1118
|
||||||
|
expression: snapshot
|
||||||
|
---
|
||||||
|
00 (C): ┌ Remixed by BEMANI Sound Team 'TAG feat. PON' - 新宝島 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
01 (C): │ │
|
||||||
|
02 (C): │ │
|
||||||
|
03 (C): │ │
|
||||||
|
04 (C): │ │
|
||||||
|
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): │ │
|
||||||
|
20 (C): │ │
|
||||||
|
21 (C): │ │
|
||||||
|
22 (C): │ │
|
||||||
|
23 (C): │ │
|
||||||
|
24 (C): │ │
|
||||||
|
25 (C): │ │
|
||||||
|
26 (C): │ │
|
||||||
|
27 (C): │ │
|
||||||
|
28 (C): │ │
|
||||||
|
29 (C): │ │
|
||||||
|
30 (C): │ │
|
||||||
|
31 (C): │ │
|
||||||
|
32 (C): │ │
|
||||||
|
33 (C): │ │
|
||||||
|
34 (C): │ │
|
||||||
|
35 (C): │ │
|
||||||
|
36 (C): │ │
|
||||||
|
37 (C): │ │
|
||||||
|
38 (C): │ │
|
||||||
|
39 (C): │ │
|
||||||
|
40 (C): │ │
|
||||||
|
41 (C): │ │
|
||||||
|
42 (C): │ │
|
||||||
|
43 (C): │ │
|
||||||
|
44 (C): │ │
|
||||||
|
45 (C): │ │
|
||||||
|
46 (C): │ │
|
||||||
|
47 (C): └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
|
@ -1095,3 +1095,25 @@ fn replacing_existing_wide_characters() {
|
||||||
);
|
);
|
||||||
assert_snapshot!(snapshot);
|
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 {
|
||||||
|
cols: 238,
|
||||||
|
rows: 48,
|
||||||
|
};
|
||||||
|
let client_id = 1;
|
||||||
|
let mut tab = create_new_tab(size);
|
||||||
|
let mut output = Output::default();
|
||||||
|
let pane_content = read_fixture("title-wide-chars");
|
||||||
|
tab.handle_pty_bytes(1, pane_content);
|
||||||
|
tab.render(&mut output, None);
|
||||||
|
let snapshot = take_snapshot(
|
||||||
|
output.serialize().get(&client_id).unwrap(),
|
||||||
|
size.rows,
|
||||||
|
size.cols,
|
||||||
|
Palette::default(),
|
||||||
|
);
|
||||||
|
assert_snapshot!(snapshot);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -312,10 +312,7 @@ impl PaneFrame {
|
||||||
if max_length <= 6 || self.title.is_empty() {
|
if max_length <= 6 || self.title.is_empty() {
|
||||||
None
|
None
|
||||||
} else if full_text.width() <= max_length {
|
} else if full_text.width() <= max_length {
|
||||||
Some((
|
Some((foreground_color(&full_text, self.color), full_text.width()))
|
||||||
foreground_color(&full_text, self.color),
|
|
||||||
full_text.chars().count(),
|
|
||||||
))
|
|
||||||
} else {
|
} else {
|
||||||
let length_of_each_half = (max_length - middle_truncated_sign.width()) / 2;
|
let length_of_each_half = (max_length - middle_truncated_sign.width()) / 2;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue