Mercurial > vim
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 |