]> granicus.if.org Git - vim/commitdiff
patch 8.0.1835: print document name does not support multi-byte v8.0.1835
authorBram Moolenaar <Bram@vim.org>
Sun, 13 May 2018 15:30:45 +0000 (17:30 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 13 May 2018 15:30:45 +0000 (17:30 +0200)
Problem:    Print document name does not support multi-byte.
Solution:   Use StartDocW() if needed. (Yasuhiro Matsumoto, closes #2478)

src/os_mswin.c
src/version.c

index e43d3a8b9f9dcebc35925c124133e4d25bc570b3..5dbfd0ef0cf79c6133c95e9f7c63980d3d5441a8 100644 (file)
@@ -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). */
index 3e6c09deb344c740eccb70d3634e7740e0bdd5e3..417fc7c1c65d19af67d67accf963fe15a40615ad 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1835,
 /**/
     1834,
 /**/