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
dev
Kristian Høgsberg 11 years ago
parent 989e9d582c
commit 1d781ee204
  1. 14
      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 */

Loading…
Cancel
Save