From 5864c30a54b250163c3a94f053f5f1b907adf9c9 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sun, 13 Jan 2019 21:54:36 +0000 Subject: Fix tabs overwriting cells during movement When compiling ncurses with the `--enable-hard-tabs` option, it will make use of tabs to speed up cursor movement. These tabs can be set at positions which will overwrite existing characters. Since these are only for movement and not supposed to write anything to the terminal, it is now checked that a cell does not contain any character before writing a tab to it. This fixes #1933. --- src/term/mod.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/term/mod.rs') diff --git a/src/term/mod.rs b/src/term/mod.rs index a35a5df0..07cd27aa 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -1565,8 +1565,9 @@ impl ansi::Handler for Term { count -= 1; let cell = &mut self.grid[&self.cursor.point]; - *cell = self.cursor.template; - cell.c = self.cursor.charsets[self.active_charset].map('\t'); + if cell.c == ' ' { + cell.c = self.cursor.charsets[self.active_charset].map('\t'); + } loop { if (self.cursor.point.col + 1) == self.grid.num_cols() { -- cgit v1.2.3-54-g00ecf