Do not force the cursor to move if it is in the automargin space at EOL

and that is where we want it to be, GitHub issue 2956.
This commit is contained in:
nicm 2021-10-28 18:57:06 +00:00
parent 49d33a4282
commit 4acad43013

16
tty.c
View File

@ -2278,17 +2278,25 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy)
if (tty->flags & TTY_BLOCK)
return;
if (cx > tty->sx - 1)
cx = tty->sx - 1;
thisx = tty->cx;
thisy = tty->cy;
/*
* If in the automargin space, and want to be there, do not move.
* Otherwise, force the cursor to be in range (and complain).
*/
if (cx == thisx && cy == thisy && cx == tty->sx)
return;
if (cx > tty->sx - 1) {
log_debug("%s: x too big %u > %u", __func__, cx, tty->sx - 1);
cx = tty->sx - 1;
}
/* No change. */
if (cx == thisx && cy == thisy)
return;
/* Very end of the line, just use absolute movement. */
/* Currently at the very end of the line - use absolute movement. */
if (thisx > tty->sx - 1)
goto absolute;