comparison src/os_mswin.c @ 13929:05aec5ac9630 v8.0.1835

patch 8.0.1835: print document name does not support multi-byte commit https://github.com/vim/vim/commit/2290b1f8aaafbcb38bd801d08e8bf86cb07abfa5 Author: Bram Moolenaar <Bram@vim.org> Date: Sun May 13 17:30:45 2018 +0200 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 https://github.com/vim/vim/issues/2478)
author Christian Brabandt <cb@256bit.org>
date Sun, 13 May 2018 17:45:05 +0200
parents 69517d67421f
children 3375a8cbb442
comparison
equal deleted inserted replaced
13928:9b53f97f532c 13929:05aec5ac9630
1676 1676
1677 int 1677 int
1678 mch_print_begin(prt_settings_T *psettings) 1678 mch_print_begin(prt_settings_T *psettings)
1679 { 1679 {
1680 int ret; 1680 int ret;
1681 static DOCINFO di;
1682 char szBuffer[300]; 1681 char szBuffer[300];
1682 #if defined(FEAT_MBYTE)
1683 WCHAR *wp = NULL;
1684 #endif
1683 1685
1684 hDlgPrint = CreateDialog(GetModuleHandle(NULL), TEXT("PrintDlgBox"), 1686 hDlgPrint = CreateDialog(GetModuleHandle(NULL), TEXT("PrintDlgBox"),
1685 prt_dlg.hwndOwner, PrintDlgProc); 1687 prt_dlg.hwndOwner, PrintDlgProc);
1686 SetAbortProc(prt_dlg.hDC, AbortProc); 1688 SetAbortProc(prt_dlg.hDC, AbortProc);
1687 wsprintf(szBuffer, _("Printing '%s'"), gettail(psettings->jobname)); 1689 wsprintf(szBuffer, _("Printing '%s'"), gettail(psettings->jobname));
1688 vimSetDlgItemText(hDlgPrint, IDC_PRINTTEXT1, (char_u *)szBuffer); 1690 vimSetDlgItemText(hDlgPrint, IDC_PRINTTEXT1, (char_u *)szBuffer);
1689 1691
1690 vim_memset(&di, 0, sizeof(DOCINFO)); 1692 #if defined(FEAT_MBYTE)
1691 di.cbSize = sizeof(DOCINFO); 1693 if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
1692 di.lpszDocName = (LPCSTR)psettings->jobname; 1694 wp = enc_to_utf16(psettings->jobname, NULL);
1693 ret = StartDoc(prt_dlg.hDC, &di); 1695 if (wp != NULL)
1696 {
1697 DOCINFOW di;
1698
1699 vim_memset(&di, 0, sizeof(di));
1700 di.cbSize = sizeof(di);
1701 di.lpszDocName = wp;
1702 ret = StartDocW(prt_dlg.hDC, &di);
1703 vim_free(wp);
1704 }
1705 else
1706 #endif
1707 {
1708 DOCINFO di;
1709
1710 vim_memset(&di, 0, sizeof(di));
1711 di.cbSize = sizeof(di);
1712 di.lpszDocName = (LPCSTR)psettings->jobname;
1713 ret = StartDoc(prt_dlg.hDC, &di);
1714 }
1694 1715
1695 #ifdef FEAT_GUI 1716 #ifdef FEAT_GUI
1696 /* Give focus back to main window (when using MDI). */ 1717 /* Give focus back to main window (when using MDI). */
1697 SetFocus(s_hwnd); 1718 SetFocus(s_hwnd);
1698 #endif 1719 #endif