Sync OpenBSD patchset 1050:

Store context off before moving the cursor when wrapping, to fix long
standing bug drawing over the status line.
This commit is contained in:
Tiago Cunha 2012-03-18 01:40:26 +00:00
parent 3893cc17a4
commit c7f078dcbc

View File

@ -1071,9 +1071,6 @@ screen_write_cell(struct screen_write_ctx *ctx,
return; return;
} }
/* Initialise the redraw context, saving the last cell. */
screen_write_initctx(ctx, &ttyctx, 1);
/* If in insert mode, make space for the cells. */ /* If in insert mode, make space for the cells. */
if (s->mode & MODE_INSERT && s->cx <= screen_size_x(s) - width) { if (s->mode & MODE_INSERT && s->cx <= screen_size_x(s) - width) {
xx = screen_size_x(s) - s->cx - width; xx = screen_size_x(s) - s->cx - width;
@ -1087,6 +1084,9 @@ screen_write_cell(struct screen_write_ctx *ctx,
s->cx = 0; /* carriage return */ s->cx = 0; /* carriage return */
} }
/* Initialise the redraw context, saving the last cell. */
screen_write_initctx(ctx, &ttyctx, 1);
/* Sanity checks. */ /* Sanity checks. */
if (((s->mode & MODE_WRAP) && s->cx > screen_size_x(s) - width) if (((s->mode & MODE_WRAP) && s->cx > screen_size_x(s) - width)
|| s->cy > screen_size_y(s) - 1) || s->cy > screen_size_y(s) - 1)