diff options
-rw-r--r-- | mbbsd/screen.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/mbbsd/screen.c b/mbbsd/screen.c index c959cf45..8256ba5e 100644 --- a/mbbsd/screen.c +++ b/mbbsd/screen.c @@ -155,6 +155,8 @@ redoscr(void) oflush(); } +// deprecated? +#if 0 void redoln(void) { @@ -179,6 +181,7 @@ redoln(void) rel_move(tc_col, tc_line, cur_col, cur_ln); oflush(); } +#endif void refresh(void) @@ -213,8 +216,25 @@ refresh(void) j = 0; bp = &big_picture[j]; len = bp->len; - if (bp->mode & MODIFIED && bp->smod < len) { + + if (bp->mode & MODIFIED && bp->smod < len) + { bp->mode &= ~(MODIFIED); + + // more effort to determine ANSI smod + if (bp->smod > 0) + { + int iesc; + for (iesc = bp->smod-1; iesc >= 0; iesc--) + { + if (bp->data[iesc] == ESC_CHR) + { + bp->smod = iesc; + break; + } + } + } + if (bp->emod >= len) bp->emod = len - 1; rel_move(tc_col, tc_line, bp->smod, i); @@ -243,7 +263,6 @@ refresh(void) o_cleol(); } bp->oldlen = len; - } rel_move(tc_col, tc_line, cur_col, cur_ln); |