lkundrak / rpms / vim

Forked from rpms/vim 4 years ago
Clone
4d16485
To: vim-dev@vim.org
4d16485
Subject: Patch 7.0.122
4d16485
Fcc: outbox
4d16485
From: Bram Moolenaar <Bram@moolenaar.net>
4d16485
Mime-Version: 1.0
4d16485
Content-Type: text/plain; charset=ISO-8859-1
4d16485
Content-Transfer-Encoding: 8bit
4d16485
------------
4d16485
4d16485
Patch 7.0.122
4d16485
Problem:    GUI: When clearing after a bold, double-wide character half a
4d16485
	    character may be drawn.
4d16485
Solution:   Check for double-wide character and redraw it. (Yukihiro Nakadaira)
4d16485
Files:	    src/screen.c
4d16485
4d16485
4d16485
*** ../vim-7.0.121/src/screen.c	Thu Sep 14 21:04:09 2006
4d16485
--- src/screen.c	Sat Oct  7 15:13:43 2006
4d16485
***************
4d16485
*** 5079,5093 ****
4d16485
  	     * character too.  If we didn't skip any blanks above, then we
4d16485
  	     * only redraw if the character wasn't already redrawn anyway.
4d16485
  	     */
4d16485
! 	    if (gui.in_use && (col > startCol || !redraw_this)
4d16485
! # ifdef FEAT_MBYTE
4d16485
! 		    && enc_dbcs == 0
4d16485
! # endif
4d16485
! 	       )
4d16485
  	    {
4d16485
  		hl = ScreenAttrs[off_to];
4d16485
  		if (hl > HL_ALL || (hl & HL_BOLD))
4d16485
! 		    screen_char(off_to - 1, row, col + coloff - 1);
4d16485
  	    }
4d16485
  #endif
4d16485
  	    screen_fill(row, row + 1, col + coloff, clear_width + coloff,
4d16485
--- 5079,5116 ----
4d16485
  	     * character too.  If we didn't skip any blanks above, then we
4d16485
  	     * only redraw if the character wasn't already redrawn anyway.
4d16485
  	     */
4d16485
! 	    if (gui.in_use && (col > startCol || !redraw_this))
4d16485
  	    {
4d16485
  		hl = ScreenAttrs[off_to];
4d16485
  		if (hl > HL_ALL || (hl & HL_BOLD))
4d16485
! 		{
4d16485
! 		    int prev_cells = 1;
4d16485
! # ifdef FEAT_MBYTE
4d16485
! 		    if (enc_utf8)
4d16485
! 			/* for utf-8, ScreenLines[char_offset + 1] == 0 means
4d16485
! 			 * that its width is 2. */
4d16485
! 			prev_cells = ScreenLines[off_to - 1] == 0 ? 2 : 1;
4d16485
! 		    else if (enc_dbcs != 0)
4d16485
! 		    {
4d16485
! 			/* find previous character by counting from first
4d16485
! 			 * column and get its width. */
4d16485
! 			unsigned off = LineOffset[row];
4d16485
! 
4d16485
! 			while (off < off_to)
4d16485
! 			{
4d16485
! 			    prev_cells = (*mb_off2cells)(off);
4d16485
! 			    off += prev_cells;
4d16485
! 			}
4d16485
! 		    }
4d16485
! 
4d16485
! 		    if (enc_dbcs != 0 && prev_cells > 1)
4d16485
! 			screen_char_2(off_to - prev_cells, row,
4d16485
! 						   col + coloff - prev_cells);
4d16485
! 		    else
4d16485
! # endif
4d16485
! 			screen_char(off_to - prev_cells, row,
4d16485
! 						   col + coloff - prev_cells);
4d16485
! 		}
4d16485
  	    }
4d16485
  #endif
4d16485
  	    screen_fill(row, row + 1, col + coloff, clear_width + coloff,
4d16485
*** ../vim-7.0.121/src/version.c	Sun Oct  8 13:56:53 2006
4d16485
--- src/version.c	Mon Oct  9 22:10:17 2006
4d16485
***************
4d16485
*** 668,669 ****
4d16485
--- 668,671 ----
4d16485
  {   /* Add new patch number below this line */
4d16485
+ /**/
4d16485
+     122,
4d16485
  /**/
4d16485
4d16485
-- 
4d16485
How To Keep A Healthy Level Of Insanity:
4d16485
7. Finish all your sentences with "in accordance with the prophecy".
4d16485
4d16485
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
4d16485
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
4d16485
\\\        download, build and distribute -- http://www.A-A-P.org        ///
4d16485
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///