From f9fe1856f209412d67d157036235cc7ced2aec15 Mon Sep 17 00:00:00 2001 From: Aram Drevekenin Date: Wed, 14 Apr 2021 14:08:46 +0200 Subject: [PATCH] fix(compatibility): rotate scroll region (#270) --- src/client/panes/grid.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/client/panes/grid.rs b/src/client/panes/grid.rs index 86dc4753..89466bea 100644 --- a/src/client/panes/grid.rs +++ b/src/client/panes/grid.rs @@ -447,11 +447,25 @@ impl Grid { self.scroll_down_one_line(); } } - pub fn rotate_scroll_region_up(&mut self, _count: usize) { - // TBD + pub fn rotate_scroll_region_up(&mut self, count: usize) { + 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()); + } + } } - pub fn rotate_scroll_region_down(&mut self, _count: usize) { - // TBD + pub fn rotate_scroll_region_down(&mut self, count: usize) { + 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_top); + self.viewport + .insert(scroll_region_bottom, Row::from_columns(columns).canonical()); + } + } } pub fn add_canonical_line(&mut self) { if let Some((scroll_region_top, scroll_region_bottom)) = self.scroll_region {