- do_text(ctx, start, i, ch, ccount, attr, ldata->lattr);
- updated_line = 1;
- }
-
- /* Cursor on this line ? (and changed) */
- if (i == our_curs_y && (term->curstype != cursor || updated_line)) {
- ch[0] = (wchar_t) cursor_background.chr;
- attr = cursor_background.attr | cursor;
- ccount = 1;
-
- if (cursor_background.cc_next) {
- termchar *dd = ldata->chars + cursor_background.cc_next;
-
- while (1) {
- unsigned long schar;
-
- schar = dd->chr;
- switch (schar & CSET_MASK) {
- case CSET_ASCII:
- schar = term->ucsdata->unitab_line[schar & 0xFF];
- break;
- case CSET_LINEDRW:
- schar = term->ucsdata->unitab_xterm[schar & 0xFF];
- break;
- case CSET_SCOACS:
- schar = term->ucsdata->unitab_scoacs[schar&0xFF];
- break;
- }
-
- if (ccount >= chlen) {
- chlen = ccount + 256;
- ch = sresize(ch, chlen, wchar_t);
- }
- ch[ccount++] = (wchar_t) schar;
+ do_text(ctx, start, i, ch, ccount, attr,
+ ldata->lattr);
+ if (attr & (TATTR_ACTCURS | TATTR_PASCURS))
+ do_cursor(ctx, start, i, ch, ccount, attr,
+ ldata->lattr);