diff --git a/src/tile.rs b/src/tile.rs index 0e2a76b..015327e 100644 --- a/src/tile.rs +++ b/src/tile.rs @@ -289,7 +289,7 @@ impl Tile { } // Autoscroll whene content arrives on stdout - self.scroll = self.stdout.len() as isize - 1 - (self.inner_size.1 as isize); + self.scroll = self.stdout.len() as isize - 2 - (self.inner_size.1 as isize); if self.scroll < 0 { self.scroll = 0; } @@ -499,15 +499,17 @@ impl Tile { } } - let mut spaces = format!( - "{}", - cursor::Goto(x + max_char_index, y + last_line_index as u16 - scroll) - ); + if last_line_index <= h { + let mut spaces = format!( + "{}", + cursor::Goto(x + max_char_index, y + last_line_index as u16 - scroll) + ); - for _ in max_char_index..w { - spaces.push(DELETE_CHAR); + for _ in max_char_index..w { + spaces.push(DELETE_CHAR); + } + buffer.push(spaces); } - buffer.push(spaces); buffer.push(format!("{}", style::Reset)); buffer.join("") @@ -522,7 +524,7 @@ impl Tile { /// Scrolls down one line. pub fn scroll_down(&mut self) { - if self.scroll + (self.inner_size.1 as isize) < self.stdout.len() as isize - 1 { + if self.scroll + (self.inner_size.1 as isize) < self.stdout.len() as isize - 2 { self.scroll += 1; } } @@ -534,7 +536,7 @@ impl Tile { /// Scrolls down one line. pub fn scroll_full_down(&mut self) { - self.scroll = self.stdout.len() as isize - self.inner_size.1 as isize - 1; + self.scroll = self.stdout.len() as isize - self.inner_size.1 as isize - 2; if self.scroll < 0 { self.scroll = 0; }