From 1d781ee204595120657dd255f1a5ca75dfe01237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Sun, 24 Nov 2013 16:54:12 -0800 Subject: [PATCH] terminal: Update terminal->end whenever we write a character We used to only update it on newline, which breaks when somebody moves the cursor below terminal->end and writes stuff. Instead update it whenever we write a character to the terminal. https://bugs.freedesktop.org/show_bug.cgi?id=71935 --- clients/terminal.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/clients/terminal.c b/clients/terminal.c index 44f206b1..e7dcd91a 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -1855,13 +1855,6 @@ handle_special_char(struct terminal *terminal, char c) case '\v': case '\f': terminal->row++; - if (terminal->row + terminal->start > terminal->end) - terminal->end = terminal->row + terminal->start; - if (terminal->end == terminal->buffer_height) - terminal->log_size = terminal->buffer_height; - else if (terminal->log_size < terminal->buffer_height) - terminal->log_size = terminal->end; - if (terminal->row > terminal->margin_bottom) { terminal->row = terminal->margin_bottom; terminal_scroll(terminal, +1); @@ -1965,6 +1958,13 @@ handle_char(struct terminal *terminal, union utf8_char utf8) row[terminal->column] = utf8; attr_row[terminal->column++] = terminal->curr_attr; + if (terminal->row + terminal->start + 1 > terminal->end) + terminal->end = terminal->row + terminal->start + 1; + if (terminal->end == terminal->buffer_height) + terminal->log_size = terminal->buffer_height; + else if (terminal->log_size < terminal->buffer_height) + terminal->log_size = terminal->end; + /* cursor jump for wide character. */ if (is_wide(utf8)) row[terminal->column++].ch = 0x200B; /* space glyph */