| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.782 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.782 |
| Problem: Windows: IME composition may use a wrong font. |
| Solution: Use 'guifontwide' for IME when it is set. (Taro Muraoka) |
| Files: runtime/doc/options.txt, src/gui.c, src/gui_w48.c, |
| src/proto/gui_w16.pro, src/proto/gui_w32.pro |
| |
| |
| |
| |
| |
| *** 3518,3523 **** |
| --- 3560,3569 ---- |
| to set 'guifontwide' at all unless you want to override the choice |
| made by Pango/Xft. |
| |
| + Windows +multibyte only: *guifontwide_win_mbyte* |
| + |
| + If set and vaild, 'guifontwide' is used for IME instead of 'guifont'. |
| + |
| *'guiheadroom'* *'ghr'* |
| 'guiheadroom' 'ghr' number (default 50) |
| global |
| |
| |
| |
| *** 1002,1007 **** |
| --- 1002,1010 ---- |
| else |
| #endif |
| gui.wide_font = font; |
| + #ifdef FEAT_GUI_MSWIN |
| + gui_mch_wide_font_changed(); |
| + #endif |
| return OK; |
| } |
| #endif |
| |
| |
| |
| *** 323,332 **** |
| --- 323,337 ---- |
| |
| /* |
| * For control IME. |
| + * |
| + * These LOGFONT used for IME. |
| */ |
| #ifdef FEAT_MBYTE |
| # ifdef USE_IM_CONTROL |
| + /* holds LOGFONT for 'guifontwide' if available, otherwise 'guifont' */ |
| static LOGFONT norm_logfont; |
| + /* holds LOGFONT for 'guifont' always. */ |
| + static LOGFONT sub_logfont; |
| # endif |
| #endif |
| |
| |
| *** 3090,3095 **** |
| --- 3095,3133 ---- |
| return res; |
| } |
| |
| + |
| + #ifdef FEAT_MBYTE_IME |
| + /* |
| + * Set correct LOGFONT to IME. Use 'guifontwide' if available, otherwise use |
| + * 'guifont' |
| + */ |
| + static void |
| + update_im_font() |
| + { |
| + LOGFONT lf_wide; |
| + |
| + if (p_guifontwide != NULL && *p_guifontwide != NUL |
| + && get_logfont(&lf_wide, p_guifontwide, NULL, TRUE) == OK) |
| + norm_logfont = lf_wide; |
| + else |
| + norm_logfont = sub_logfont; |
| + im_set_font(&norm_logfont); |
| + } |
| + #endif |
| + |
| + #ifdef FEAT_MBYTE |
| + /* |
| + * Handler of gui.wide_font (p_guifontwide) changed notification. |
| + */ |
| + void |
| + gui_mch_wide_font_changed() |
| + { |
| + # ifdef FEAT_MBYTE_IME |
| + update_im_font(); |
| + # endif |
| + } |
| + #endif |
| + |
| /* |
| * Initialise vim to use the font with the given name. |
| * Return FAIL if the font could not be loaded, OK otherwise. |
| |
| *** 3112,3120 **** |
| font_name = lf.lfFaceName; |
| #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME) |
| norm_logfont = lf; |
| #endif |
| #ifdef FEAT_MBYTE_IME |
| ! im_set_font(&lf); |
| #endif |
| gui_mch_free_font(gui.norm_font); |
| gui.norm_font = font; |
| --- 3150,3159 ---- |
| font_name = lf.lfFaceName; |
| #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME) |
| norm_logfont = lf; |
| + sub_logfont = lf; |
| #endif |
| #ifdef FEAT_MBYTE_IME |
| ! update_im_font(); |
| #endif |
| gui_mch_free_font(gui.norm_font); |
| gui.norm_font = font; |
| |
| |
| |
| *** 50,55 **** |
| --- 50,56 ---- |
| void gui_mch_insert_lines __ARGS((int row, int num_lines)); |
| void gui_mch_exit __ARGS((int rc)); |
| int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); |
| + void gui_mch_wide_font_changed __ARGS((void)); |
| int gui_mch_maximized __ARGS((void)); |
| void gui_mch_newfont __ARGS((void)); |
| void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); |
| |
| |
| |
| *** 50,55 **** |
| --- 50,56 ---- |
| void gui_mch_insert_lines __ARGS((int row, int num_lines)); |
| void gui_mch_exit __ARGS((int rc)); |
| int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); |
| + void gui_mch_wide_font_changed __ARGS((void)); |
| int gui_mch_maximized __ARGS((void)); |
| void gui_mch_newfont __ARGS((void)); |
| void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); |
| |
| |
| |
| *** 727,728 **** |
| --- 727,730 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 782, |
| /**/ |
| |
| -- |
| "A mouse can be just as dangerous as a bullet or a bomb." |
| (US Representative Lamar Smith, R-Texas) |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 /// |