Patch 7.3.1220
Problem:    MS-Windows: When using wide font italic and bold are not included.
Solution:   Support wide-bold, wide-italic and wide-bold-italic. (Ken Takata,
            Taro Muraoka)
Files:      src/gui.c, src/gui.h, src/gui_w48.c


*** ../vim-7.3.1219/src/gui.c   2013-06-12 20:35:46.000000000 +0200
--- src/gui.c   2013-06-17 22:22:49.000000000 +0200
***************
*** 410,415 ****
--- 410,423 ----
      gui.fontset = NOFONTSET;
  # endif
  #endif
+ #ifdef FEAT_MBYTE
+     gui.wide_font = NOFONT;
+ # ifndef FEAT_GUI_GTK
+     gui.wide_bold_font = NOFONT;
+     gui.wide_ital_font = NOFONT;
+     gui.wide_boldital_font = NOFONT;
+ # endif
+ #endif
  
  #ifdef FEAT_MENU
  # ifndef FEAT_GUI_GTK
***************
*** 1012,1017 ****
--- 1020,1030 ----
        gui.wide_font = font;
  # ifdef FEAT_GUI_MSWIN
      gui_mch_wide_font_changed();
+ # else
+     /*
+      * TODO: setup wide_bold_font, wide_ital_font and wide_boldital_font to
+      * support those fonts for 'guifontwide'.
+      */
  # endif
      return OK;
  }
***************
*** 2180,2185 ****
--- 2193,2201 ----
      guicolor_T        sp_color;
  #if !defined(MSWIN16_FASTTEXT) && !defined(FEAT_GUI_GTK)
      GuiFont   font = NOFONT;
+ # ifdef FEAT_MBYTE
+     GuiFont   wide_font = NOFONT;
+ # endif
  # ifdef FEAT_XFONTSET
      GuiFontset        fontset = NOFONTSET;
  # endif
***************
*** 2269,2274 ****
--- 2285,2307 ----
        }
        else
            font = gui.norm_font;
+ 
+ # ifdef FEAT_MBYTE
+       /*
+        * Choose correct wide_font by font.  wide_font should be set with font
+        * at same time in above block.  But it will make many "ifdef" nasty
+        * blocks.  So we do it here.
+        */
+       if (font == gui.boldital_font && gui.wide_boldital_font)
+           wide_font = gui.wide_boldital_font;
+       else if (font == gui.bold_font && gui.wide_bold_font)
+           wide_font = gui.wide_bold_font;
+       else if (font == gui.ital_font && gui.wide_ital_font)
+           wide_font = gui.wide_ital_font;
+       else if (font == gui.norm_font && gui.wide_font)
+           wide_font = gui.wide_font;
+ # endif
+ 
      }
  # ifdef FEAT_XFONTSET
      if (fontset != NOFONTSET)
***************
*** 2407,2413 ****
  #  ifdef FEAT_XFONTSET
                    && fontset == NOFONTSET
  #  endif
!                   && gui.wide_font != NOFONT)
                curr_wide = TRUE;
            else
                curr_wide = FALSE;
--- 2440,2446 ----
  #  ifdef FEAT_XFONTSET
                    && fontset == NOFONTSET
  #  endif
!                   && wide_font != NOFONT)
                curr_wide = TRUE;
            else
                curr_wide = FALSE;
***************
*** 2441,2447 ****
                if (thislen > 0)
                {
                    if (prev_wide)
!                       gui_mch_set_font(gui.wide_font);
                    gui_mch_draw_string(gui.row, scol, s + start, thislen,
                                                                  draw_flags);
                    if (prev_wide)
--- 2474,2480 ----
                if (thislen > 0)
                {
                    if (prev_wide)
!                       gui_mch_set_font(wide_font);
                    gui_mch_draw_string(gui.row, scol, s + start, thislen,
                                                                  draw_flags);
                    if (prev_wide)
*** ../vim-7.3.1219/src/gui.h   2013-01-23 13:40:54.000000000 +0100
--- src/gui.h   2013-06-17 22:22:49.000000000 +0200
***************
*** 311,317 ****
  # endif
  #endif
  #ifdef FEAT_MBYTE
!     GuiFont   wide_font;          /* 'guifontwide' font */
  #endif
  #ifdef FEAT_XFONTSET
      GuiFontset        fontset;            /* set of fonts for multi-byte 
chars */
--- 311,322 ----
  # endif
  #endif
  #ifdef FEAT_MBYTE
!     GuiFont   wide_font;          /* Normal 'guifontwide' font */
! # ifndef FEAT_GUI_GTK
!     GuiFont   wide_bold_font;     /* Bold 'guifontwide' font */
!     GuiFont   wide_ital_font;     /* Italic 'guifontwide' font */
!     GuiFont   wide_boldital_font; /* Bold-Italic 'guifontwide' font */
! # endif
  #endif
  #ifdef FEAT_XFONTSET
      GuiFontset        fontset;            /* set of fonts for multi-byte 
chars */
*** ../vim-7.3.1219/src/gui_w48.c       2013-05-06 04:21:35.000000000 +0200
--- src/gui_w48.c       2013-06-17 22:22:49.000000000 +0200
***************
*** 3123,3131 ****
--- 3123,3165 ----
      void
  gui_mch_wide_font_changed()
  {
+ # ifndef MSWIN16_FASTTEXT
+     LOGFONT lf;
+ # endif
+ 
  # ifdef FEAT_MBYTE_IME
      update_im_font();
  # endif
+ 
+ # ifndef MSWIN16_FASTTEXT
+     gui_mch_free_font(gui.wide_ital_font);
+     gui.wide_ital_font = NOFONT;
+     gui_mch_free_font(gui.wide_bold_font);
+     gui.wide_bold_font = NOFONT;
+     gui_mch_free_font(gui.wide_boldital_font);
+     gui.wide_boldital_font = NOFONT;
+ 
+     if (gui.wide_font
+       && GetObject((HFONT)gui.wide_font, sizeof(lf), &lf))
+     {
+       if (!lf.lfItalic)
+       {
+           lf.lfItalic = TRUE;
+           gui.wide_ital_font = get_font_handle(&lf);
+           lf.lfItalic = FALSE;
+       }
+       if (lf.lfWeight < FW_BOLD)
+       {
+           lf.lfWeight = FW_BOLD;
+           gui.wide_bold_font = get_font_handle(&lf);
+           if (!lf.lfItalic)
+           {
+               lf.lfItalic = TRUE;
+               gui.wide_boldital_font = get_font_handle(&lf);
+           }
+       }
+     }
+ # endif
  }
  #endif
  
*** ../vim-7.3.1219/src/version.c       2013-06-17 22:04:34.000000000 +0200
--- src/version.c       2013-06-17 22:24:18.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
  {   /* Add new patch number below this line */
+ /**/
+     1220,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
243. You unsuccessfully try to download a pizza from www.dominos.com.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Raspunde prin e-mail lui