1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-05-28 15:24:49 -05:00

In my revamp of cursor handling I had assumed that you were supposed

to call _either_ do_text() _or_ do_cursor() on a given character
cell. In fact you're supposed to call do_text() no matter what, and
then call do_cursor() as well if it's got the cursor on it, since
do_cursor() _only_ draws the actual cursor, which often doesn't also
cause the text to get drawn.

I'm half tempted to change this in the interface, retire do_cursor()
as an external function and relegate it to an internal function in
each front end, and require that do_text() must fully process all
cursor attributes it is passed. However, I haven't done this yet.

[originally from svn r5017]
This commit is contained in:
Simon Tatham 2004-12-22 10:21:50 +00:00
parent e202f0f228
commit 414aba9f5a

View File

@ -4830,12 +4830,11 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise)
if (break_run) {
if ((dirty_run || last_run_dirty) && ccount > 0) {
do_text(ctx, start, i, ch, ccount, attr,
ldata->lattr);
if (attr & (TATTR_ACTCURS | TATTR_PASCURS))
do_cursor(ctx, our_curs_x, i, ch, ccount, attr,
do_cursor(ctx, start, i, ch, ccount, attr,
ldata->lattr);
else
do_text(ctx, start, i, ch, ccount, attr,
ldata->lattr);
updated_line = 1;
}
@ -4917,12 +4916,11 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise)
}
}
if (dirty_run && ccount > 0) {
do_text(ctx, start, i, ch, ccount, attr,
ldata->lattr);
if (attr & (TATTR_ACTCURS | TATTR_PASCURS))
do_cursor(ctx, our_curs_x, i, ch, ccount, attr,
do_cursor(ctx, start, i, ch, ccount, attr,
ldata->lattr);
else
do_text(ctx, start, i, ch, ccount, attr,
ldata->lattr);
updated_line = 1;
}