vt: handle cursor-at-right-edge

When printing to the right-most-cell, don't advance the
cursor. Instead, set a flag that indicates that the *next* print
should line-wrap.
This commit is contained in:
Daniel Eklöf 2019-06-17 20:53:05 +02:00
parent 4585df532c
commit 963b266cce
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 11 additions and 2 deletions

11
vt.c
View file

@ -177,7 +177,10 @@ action(struct terminal *term, enum action action, uint8_t c)
memset(&term->vt.utf8, 0, sizeof(term->vt.utf8));
break;
case ACTION_PRINT:{
case ACTION_PRINT: {
if (term->grid.print_needs_wrap)
grid_cursor_move(&term->grid, 1);
struct cell *cell = &term->grid.cells[term->grid.cursor];
cell->dirty = true;
@ -194,7 +197,11 @@ action(struct terminal *term, enum action action, uint8_t c)
cell->attrs = term->vt.attrs;
grid_cursor_move(&term->grid, 1);
if ((term->grid.cursor + 1) % term->grid.cols)
grid_cursor_move(&term->grid, 1);
else
term->grid.print_needs_wrap = true;
term->grid.dirty = true;
break;
}