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:
parent
e202f0f228
commit
414aba9f5a
14
terminal.c
14
terminal.c
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user