diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-09-26 14:46:04 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-09-26 14:46:04 +0200 |
commit | 6edeaf387c7218a84a5521a4e82b4000496b523b (patch) | |
tree | 3961c09ba321c022f7e5a814f05941b8c88d0a05 /src/gui_w32.c | |
parent | a8fc0d3817f69b3599a1b56d74a2ddbd3139f40c (diff) | |
download | vim-git-6edeaf387c7218a84a5521a4e82b4000496b523b.tar.gz |
patch 8.0.1150: MS-Windows GUI: dialog font size is incorrectv8.0.1150
Problem: MS-Windows GUI: dialog font size is incorrect.
Solution: Pass flag to indicate 'encoding' or active codepage. (Yasuhiro
Matsomoto, closes #2160)
Diffstat (limited to 'src/gui_w32.c')
-rw-r--r-- | src/gui_w32.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/gui_w32.c b/src/gui_w32.c index aa0948843..c5564cd2a 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -4384,7 +4384,7 @@ add_dialog_element( WORD clss, const char *caption); static LPWORD lpwAlign(LPWORD); -static int nCopyAnsiToWideChar(LPWORD, LPSTR); +static int nCopyAnsiToWideChar(LPWORD, LPSTR, BOOL); #if defined(FEAT_MENU) && defined(FEAT_TEAROFF) static void gui_mch_tearoff(char_u *title, vimmenu_T *menu, int initX, int initY); #endif @@ -7284,9 +7284,8 @@ gui_mch_dialog( add_word(0); // Class /* copy the title of the dialog */ - nchar = nCopyAnsiToWideChar(p, (title ? - (LPSTR)title : - (LPSTR)("Vim "VIM_VERSION_MEDIUM))); + nchar = nCopyAnsiToWideChar(p, (title ? (LPSTR)title + : (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE); p += nchar; if (s_usenewlook) @@ -7298,13 +7297,13 @@ gui_mch_dialog( /* point size */ *p++ = -MulDiv(lfSysmenu.lfHeight, 72, GetDeviceCaps(hdc, LOGPIXELSY)); - nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName)); + nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE); } else #endif { *p++ = DLG_FONT_POINT_SIZE; // point size - nchar = nCopyAnsiToWideChar(p, TEXT(DLG_FONT_NAME)); + nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE); } p += nchar; } @@ -7485,7 +7484,7 @@ add_dialog_element( *p++ = (WORD)0xffff; *p++ = clss; //2 more here - nchar = nCopyAnsiToWideChar(p, (LPSTR)caption); //strlen(caption)+1 + nchar = nCopyAnsiToWideChar(p, (LPSTR)caption, TRUE); //strlen(caption)+1 p += nchar; *p++ = 0; // advance pointer over nExtraStuff WORD - 2 more @@ -7517,11 +7516,13 @@ lpwAlign( * parameter as wide character (16-bits / char) string, and returns integer * number of wide characters (words) in string (including the trailing wide * char NULL). Partly taken from the Win32SDK samples. - */ + * If "use_enc" is TRUE, 'encoding' is used for "lpAnsiIn". If FALSE, current + * ACP is used for "lpAnsiIn". */ static int nCopyAnsiToWideChar( LPWORD lpWCStr, - LPSTR lpAnsiIn) + LPSTR lpAnsiIn, + BOOL use_enc) { int nChar = 0; #ifdef FEAT_MBYTE @@ -7529,7 +7530,7 @@ nCopyAnsiToWideChar( int i; WCHAR *wn; - if (enc_codepage == 0 && (int)GetACP() != enc_codepage) + if (use_enc && enc_codepage >= 0 && (int)GetACP() != enc_codepage) { /* Not a codepage, use our own conversion function. */ wn = enc_to_utf16((char_u *)lpAnsiIn, NULL); @@ -7852,8 +7853,8 @@ gui_mch_tearoff( /* copy the title of the dialog */ nchar = nCopyAnsiToWideChar(p, ((*title) - ? (LPSTR)title - : (LPSTR)("Vim "VIM_VERSION_MEDIUM))); + ? (LPSTR)title + : (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE); p += nchar; if (s_usenewlook) @@ -7865,13 +7866,13 @@ gui_mch_tearoff( /* point size */ *p++ = -MulDiv(lfSysmenu.lfHeight, 72, GetDeviceCaps(hdc, LOGPIXELSY)); - nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName)); + nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE); } else #endif { *p++ = DLG_FONT_POINT_SIZE; // point size - nchar = nCopyAnsiToWideChar (p, TEXT(DLG_FONT_NAME)); + nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE); } p += nchar; } |