From: Bram Moolenaar Date: Sun, 13 May 2018 15:30:45 +0000 (+0200) Subject: patch 8.0.1835: print document name does not support multi-byte X-Git-Tag: v8.0.1835 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2290b1f8aaafbcb38bd801d08e8bf86cb07abfa5;p=thirdparty%2Fvim.git patch 8.0.1835: print document name does not support multi-byte Problem: Print document name does not support multi-byte. Solution: Use StartDocW() if needed. (Yasuhiro Matsumoto, closes #2478) --- diff --git a/src/os_mswin.c b/src/os_mswin.c index e43d3a8b9f..5dbfd0ef0c 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -1678,8 +1678,10 @@ init_fail_dlg: mch_print_begin(prt_settings_T *psettings) { int ret; - static DOCINFO di; char szBuffer[300]; +#if defined(FEAT_MBYTE) + WCHAR *wp = NULL; +#endif hDlgPrint = CreateDialog(GetModuleHandle(NULL), TEXT("PrintDlgBox"), prt_dlg.hwndOwner, PrintDlgProc); @@ -1687,10 +1689,29 @@ mch_print_begin(prt_settings_T *psettings) wsprintf(szBuffer, _("Printing '%s'"), gettail(psettings->jobname)); vimSetDlgItemText(hDlgPrint, IDC_PRINTTEXT1, (char_u *)szBuffer); - vim_memset(&di, 0, sizeof(DOCINFO)); - di.cbSize = sizeof(DOCINFO); - di.lpszDocName = (LPCSTR)psettings->jobname; - ret = StartDoc(prt_dlg.hDC, &di); +#if defined(FEAT_MBYTE) + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + wp = enc_to_utf16(psettings->jobname, NULL); + if (wp != NULL) + { + DOCINFOW di; + + vim_memset(&di, 0, sizeof(di)); + di.cbSize = sizeof(di); + di.lpszDocName = wp; + ret = StartDocW(prt_dlg.hDC, &di); + vim_free(wp); + } + else +#endif + { + DOCINFO di; + + vim_memset(&di, 0, sizeof(di)); + di.cbSize = sizeof(di); + di.lpszDocName = (LPCSTR)psettings->jobname; + ret = StartDoc(prt_dlg.hDC, &di); + } #ifdef FEAT_GUI /* Give focus back to main window (when using MDI). */ diff --git a/src/version.c b/src/version.c index 3e6c09deb3..417fc7c1c6 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1835, /**/ 1834, /**/