Cursor up and down should be limited by the scroll region (cuu should stop at

the scroll region top if starting from below it and cud stop at the bottom if
starting from above). Fixes another vttest test.
pull/1/head
Nicholas Marriott 2009-07-09 18:08:13 +00:00
parent 4422b958c3
commit 664a0bd559
1 changed files with 19 additions and 5 deletions

View File

@ -1,4 +1,4 @@
/* $Id: screen-write.c,v 1.58 2009-07-09 18:04:53 nicm Exp $ */
/* $Id: screen-write.c,v 1.59 2009-07-09 18:08:13 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -232,8 +232,15 @@ screen_write_cursorup(struct screen_write_ctx *ctx, u_int ny)
if (ny == 0)
ny = 1;
if (ny > s->cy)
ny = s->cy;
if (s->cy < s->rupper) {
/* Above region. */
if (ny > s->cy)
ny = s->cy;
} else {
/* Below region. */
if (ny > s->cy - s->rupper)
ny = s->cy - s->rupper;
}
if (ny == 0)
return;
@ -249,8 +256,15 @@ screen_write_cursordown(struct screen_write_ctx *ctx, u_int ny)
if (ny == 0)
ny = 1;
if (ny > screen_size_y(s) - 1 - s->cy)
ny = screen_size_y(s) - 1 - s->cy;
if (s->cy > s->rlower) {
/* Below region. */
if (ny > screen_size_y(s) - 1 - s->cy)
ny = screen_size_y(s) - 1 - s->cy;
} else {
/* Above region. */
if (ny > s->rlower - s->cy)
ny = s->rlower - s->cy;
}
if (ny == 0)
return;