diff --git a/tty.c b/tty.c index c999e4be..a01bd181 100644 --- a/tty.c +++ b/tty.c @@ -1,4 +1,4 @@ -/* $Id: tty.c,v 1.146 2009-10-15 01:33:21 tcunha Exp $ */ +/* $Id: tty.c,v 1.147 2009-10-15 01:34:28 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -950,14 +950,16 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy) cx = tty->sx - 1; thisx = tty->cx; - if (thisx > tty->sx - 1) - thisx = tty->sx - 1; thisy = tty->cy; /* No change. */ if (cx == thisx && cy == thisy) return; + /* Very end of the line, just use absolute movement. */ + if (thisx > tty->sx - 1) + goto absolute; + /* Move to home position (0, 0). */ if (cx == 0 && cy == 0 && tty_term_has(term, TTYC_HOME)) { tty_putcode(tty, TTYC_HOME); @@ -1048,6 +1050,7 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy) } } +absolute: /* Absolute movement. */ tty_putcode2(tty, TTYC_CUP, cy, cx);