From 334d50e98c5f579e6f5b240ef2be971472ee27fb Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sat, 24 Mar 2018 14:42:05 +0100 Subject: [PATCH] Fix cursor not showing in first column There was a bug in the display iterator where the first column was never reached after the top line because it was instantly incremented to 1 after it was reset when iterator column reached the end of the terminal width. This has been fixed by making sure that the column is never incremented when the column is reset due to a change in terminal line. This fixes #1198. --- src/grid/mod.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/grid/mod.rs b/src/grid/mod.rs index faf67772..0564cdf5 100644 --- a/src/grid/mod.rs +++ b/src/grid/mod.rs @@ -748,13 +748,13 @@ impl<'a, T: Copy + 'a> Iterator for DisplayIter<'a, T> { #[inline] fn next(&mut self) -> Option { // Make sure indices are valid. Return None if we've reached the end. - if self.col == self.grid.num_cols() { + let next_line = self.col == self.grid.num_cols(); + if next_line { if self.offset == self.limit { return None; } self.col = Column(0); - self.offset -= 1; self.line = Line(*self.grid.lines - 1 - (self.offset - self.limit)); } @@ -766,7 +766,9 @@ impl<'a, T: Copy + 'a> Iterator for DisplayIter<'a, T> { column: self.col }); - self.col += 1; + if !next_line { + self.col += 1; + } item } }