--- rxvt-unicode/src/screen.C 2004/11/21 18:51:13 1.139 +++ rxvt-unicode/src/screen.C 2004/12/01 02:12:18 1.141 @@ -885,14 +885,14 @@ srp = screen.rend[row]; /* _must_ refresh */ } - if (screen.flags & Screen_Insert) - scr_insdel_chars (1, INSERT); - // rely on wcwidth to tell us the character width, at least for non-latin1 // do wcwidth before further replacements, as wcwidth says that line-drawing // characters have width -1 (DOH!) on GNU/Linux sometimes. int width = c < 0x100 ? 1 : wcwidth (c); + if (screen.flags & Screen_Insert) + scr_insdel_chars (width, INSERT); + if (charsets[screen.charset] == '0') // DEC SPECIAL { // vt100 special graphics and line drawing @@ -1102,7 +1102,7 @@ // store horizontal tab commands as characters inside the text // buffer so they can be selected and pasted. - if (ht) + if (ht && options & Opt_pastableTabs) { base_rend = SET_FONT (base_rend, 0); @@ -2246,7 +2246,7 @@ // redraw one or more characters - // seek to the beginning if wide characters + // seek to the beginning of wide characters while (stp[col] == NOCHAR && col > 0) --col;