From 9c69732279b0d8a61cdbc564c103622a0891edeb Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 9 Oct 2006 20:11:17 +0000 Subject: updated for version 7.0-122 --- src/screen.c | 35 +++++++++++++++++++++++++++++------ src/version.c | 2 ++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/screen.c b/src/screen.c index 8c5e20ce2..b861d7805 100644 --- a/src/screen.c +++ b/src/screen.c @@ -5079,15 +5079,38 @@ screen_line(row, coloff, endcol, clear_width * character too. If we didn't skip any blanks above, then we * only redraw if the character wasn't already redrawn anyway. */ - if (gui.in_use && (col > startCol || !redraw_this) -# ifdef FEAT_MBYTE - && enc_dbcs == 0 -# endif - ) + if (gui.in_use && (col > startCol || !redraw_this)) { hl = ScreenAttrs[off_to]; if (hl > HL_ALL || (hl & HL_BOLD)) - screen_char(off_to - 1, row, col + coloff - 1); + { + int prev_cells = 1; +# ifdef FEAT_MBYTE + if (enc_utf8) + /* for utf-8, ScreenLines[char_offset + 1] == 0 means + * that its width is 2. */ + prev_cells = ScreenLines[off_to - 1] == 0 ? 2 : 1; + else if (enc_dbcs != 0) + { + /* find previous character by counting from first + * column and get its width. */ + unsigned off = LineOffset[row]; + + while (off < off_to) + { + prev_cells = (*mb_off2cells)(off); + off += prev_cells; + } + } + + if (enc_dbcs != 0 && prev_cells > 1) + screen_char_2(off_to - prev_cells, row, + col + coloff - prev_cells); + else +# endif + screen_char(off_to - prev_cells, row, + col + coloff - prev_cells); + } } #endif screen_fill(row, row + 1, col + coloff, clear_width + coloff, diff --git a/src/version.c b/src/version.c index d115800fa..afb16d2e4 100644 --- a/src/version.c +++ b/src/version.c @@ -666,6 +666,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 122, /**/ 121, /**/ -- cgit v1.2.1