Fix cursor display on a combined character cell.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 15 Oct 2004 08:51:57 +0000 (08:51 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 15 Oct 2004 08:51:57 +0000 (08:51 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@4625 cda61777-01e9-0310-a592-d414129be87e

terminal.c
unix/pterm.c

index 281d2d2..87f4a89 100644 (file)
@@ -2717,6 +2717,7 @@ void term_out(Terminal *term)
                        break;
                      case 0:
                        add_cc(cline, term->curs.x - !term->wrapnext, c);
+                       term->seen_disp_event = 1;
                        continue;
                      default:
                        continue;
@@ -4559,6 +4560,7 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise)
        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;
@@ -4594,7 +4596,7 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise)
                attr |= TATTR_COMBINING;
            }
 
-           do_cursor(ctx, our_curs_x, i, ch, 1, attr, ldata->lattr);
+           do_cursor(ctx, our_curs_x, i, ch, ccount, attr, ldata->lattr);
            term->curstype = cursor;
        }
 
index 7efce80..9f767fd 100644 (file)
@@ -2049,6 +2049,9 @@ void do_cursor(Context ctx, int x, int y, wchar_t *text, int len,
         active = 0;
     do_text_internal(ctx, x, y, text, len, attr, lattr);
 
+    if (attr & TATTR_COMBINING)
+       len = 1;
+
     if (attr & ATTR_WIDE) {
        widefactor = 2;
     } else {