Sync OpenBSD patchset 853:

When clearing the entire screen, clear lines that are used into the
history like xterm does. Requested ages ago by someone I've forgotten.
This commit is contained in:
Tiago Cunha
2011-02-15 15:10:47 +00:00
parent 4e4568cade
commit 2ab568fa88
3 changed files with 43 additions and 7 deletions

View File

@@ -1,4 +1,4 @@
/* $Id: screen-write.c,v 1.92 2011-01-07 14:34:45 tcunha Exp $ */
/* $Id: screen-write.c,v 1.93 2011-02-15 15:10:47 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -931,9 +931,14 @@ screen_write_clearendofscreen(struct screen_write_ctx *ctx)
sx = screen_size_x(s);
sy = screen_size_y(s);
if (s->cx <= sx - 1)
grid_view_clear(s->grid, s->cx, s->cy, sx - s->cx, 1);
grid_view_clear(s->grid, 0, s->cy + 1, sx, sy - (s->cy + 1));
/* Scroll into history if it is enabled and clearing entire screen. */
if (s->cy == 0 && s->grid->flags & GRID_HISTORY)
grid_view_clear_history(s->grid);
else {
if (s->cx <= sx - 1)
grid_view_clear(s->grid, s->cx, s->cy, sx - s->cx, 1);
grid_view_clear(s->grid, 0, s->cy + 1, sx, sy - (s->cy + 1));
}
tty_write(tty_cmd_clearendofscreen, &ttyctx);
}
@@ -969,7 +974,13 @@ screen_write_clearscreen(struct screen_write_ctx *ctx)
screen_write_initctx(ctx, &ttyctx, 0);
grid_view_clear(s->grid, 0, 0, screen_size_x(s), screen_size_y(s));
/* Scroll into history if it is enabled. */
if (s->grid->flags & GRID_HISTORY)
grid_view_clear_history(s->grid);
else {
grid_view_clear(
s->grid, 0, 0, screen_size_x(s), screen_size_y(s));
}
tty_write(tty_cmd_clearscreen, &ttyctx);
}