diff options
| author | Brooks J Rady <b.j.rady@gmail.com> | 2021-04-16 16:50:44 +0100 |
|---|---|---|
| committer | Brooks J Rady <b.j.rady@gmail.com> | 2021-04-16 16:50:44 +0100 |
| commit | 7bbd5e2974daca2c7b1a0e1d69b6d6f9d5a64a43 (patch) | |
| tree | 416d3417fcfab8b98c27406e11bc5cc84b37dd22 /src | |
| parent | fix(build): return a clearer message on install failure (diff) | |
| parent | fix(compatibility): properly scroll up in scroll region (#274) (diff) | |
| download | sl0ppij-7bbd5e2974daca2c7b1a0e1d69b6d6f9d5a64a43.tar.gz sl0ppij-7bbd5e2974daca2c7b1a0e1d69b6d6f9d5a64a43.tar.xz sl0ppij-7bbd5e2974daca2c7b1a0e1d69b6d6f9d5a64a43.zip | |
Merge branch 'main' of github.com:zellij-org/zellij
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/panes/grid.rs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/client/panes/grid.rs b/src/client/panes/grid.rs index 525de39e..950c72de 100644 --- a/src/client/panes/grid.rs +++ b/src/client/panes/grid.rs @@ -451,9 +451,13 @@ impl Grid { if let Some((scroll_region_top, scroll_region_bottom)) = self.scroll_region { for _ in 0..count { let columns = vec![EMPTY_TERMINAL_CHARACTER; self.width]; - self.viewport.remove(scroll_region_bottom); - self.viewport - .insert(scroll_region_top, Row::from_columns(columns).canonical()); + if scroll_region_bottom < self.viewport.len() { + self.viewport.remove(scroll_region_bottom); + } + if scroll_region_top < self.viewport.len() { + self.viewport + .insert(scroll_region_top, Row::from_columns(columns).canonical()); + } } } } @@ -462,8 +466,12 @@ impl Grid { for _ in 0..count { let columns = vec![EMPTY_TERMINAL_CHARACTER; self.width]; self.viewport.remove(scroll_region_top); - self.viewport - .insert(scroll_region_bottom, Row::from_columns(columns).canonical()); + if self.viewport.len() > scroll_region_top { + self.viewport + .insert(scroll_region_bottom, Row::from_columns(columns).canonical()); + } else { + self.viewport.push(Row::from_columns(columns).canonical()); + } } } } @@ -1060,6 +1068,7 @@ impl vte::Perform for Grid { if line_count >= 0 { self.rotate_scroll_region_up(line_count as usize); } else { + // TODO: can this actually happen? self.rotate_scroll_region_down(line_count.abs() as usize); } } else if c == 'S' { @@ -1069,10 +1078,7 @@ impl vte::Perform for Grid { } else { params[0] as usize }; - let pad_character = EMPTY_TERMINAL_CHARACTER; - self.delete_lines_in_scroll_region(count, pad_character); - // TODO: since delete_lines_in_scroll_region also adds lines, is the below redundant? - self.add_empty_lines_in_scroll_region(count, pad_character); + self.rotate_scroll_region_down(count); } else if c == '@' { let count = if params[0] == 0 { 1 |
