Do not let CUU and CUD scroll off screen.

Summary:
ISO 6429 is a bit vague here but I don't think that the cursor should
be let go off screen.

Test Plan: terminology -g80x30, vttest, 1 -> test failed

Reviewers: billiob

Reviewed By: billiob

Differential Revision: https://phab.enlightenment.org/D409
This commit is contained in:
Aleksandar Popadić 2013-12-25 12:07:07 +01:00 committed by Boris Faure
parent a3e67d8567
commit 5ab7a6f827
1 changed files with 6 additions and 12 deletions

View File

@ -378,25 +378,19 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
case 'A': // cursor up N
case 'e': // cursor up N
arg = _csi_arg_get(&b);
if (arg < 1) arg = 1;
DBG("cursor up %d", arg);
ty->state.wrapnext = 0;
for (i = 0; i < arg; i++)
{
ty->state.cy--;
_termpty_text_scroll_rev_test(ty, EINA_FALSE);
}
ty->state.cy -= arg;
ty->state.cy = MAX(0, ty->state.cy);
ty->state.cy = MIN(ty->h - 1, ty->state.cy);
break;
case 'B': // cursor down N
arg = _csi_arg_get(&b);
if (arg < 1) arg = 1;
DBG("cursor down %d", arg);
ty->state.wrapnext = 0;
for (i = 0; i < arg; i++)
{
ty->state.cy++;
_termpty_text_scroll_test(ty, EINA_FALSE);
}
ty->state.cy += arg;
ty->state.cy = MAX(0, ty->state.cy);
ty->state.cy = MIN(ty->h - 1, ty->state.cy);
break;
case 'D': // cursor left N
arg = _csi_arg_get(&b);