forked from aniani/vim
updated for version 7.3.277
Problem: MS-Windows: some characters do not show in dialogs. Solution: Use the wide methods when available. (Yanwei Jia)
This commit is contained in:
parent
cf83973211
commit
8c85fa3b26
@ -1270,6 +1270,25 @@ gui_mch_prepare(int *argc, char **argv)
|
|||||||
pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib,
|
pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib,
|
||||||
"GetMonitorInfoA");
|
"GetMonitorInfoA");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
/* If the OS is Windows NT, use wide functions;
|
||||||
|
* this enables common dialogs input unicode from IME. */
|
||||||
|
if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)
|
||||||
|
{
|
||||||
|
pDispatchMessage = DispatchMessageW;
|
||||||
|
pGetMessage = GetMessageW;
|
||||||
|
pIsDialogMessage = IsDialogMessageW;
|
||||||
|
pPeekMessage = PeekMessageW;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pDispatchMessage = DispatchMessageA;
|
||||||
|
pGetMessage = GetMessageA;
|
||||||
|
pIsDialogMessage = IsDialogMessageA;
|
||||||
|
pPeekMessage = PeekMessageA;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -390,7 +390,7 @@ _OnBlinkTimer(
|
|||||||
KillTimer(NULL, idEvent);
|
KillTimer(NULL, idEvent);
|
||||||
|
|
||||||
/* Eat spurious WM_TIMER messages */
|
/* Eat spurious WM_TIMER messages */
|
||||||
while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
||||||
;
|
;
|
||||||
|
|
||||||
if (blink_state == BLINK_ON)
|
if (blink_state == BLINK_ON)
|
||||||
@ -418,7 +418,7 @@ gui_mswin_rm_blink_timer(void)
|
|||||||
{
|
{
|
||||||
KillTimer(NULL, blink_timer);
|
KillTimer(NULL, blink_timer);
|
||||||
/* Eat spurious WM_TIMER messages */
|
/* Eat spurious WM_TIMER messages */
|
||||||
while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
||||||
;
|
;
|
||||||
blink_timer = 0;
|
blink_timer = 0;
|
||||||
}
|
}
|
||||||
@ -476,7 +476,7 @@ _OnTimer(
|
|||||||
s_timed_out = TRUE;
|
s_timed_out = TRUE;
|
||||||
|
|
||||||
/* Eat spurious WM_TIMER messages */
|
/* Eat spurious WM_TIMER messages */
|
||||||
while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
||||||
;
|
;
|
||||||
if (idEvent == s_wait_timer)
|
if (idEvent == s_wait_timer)
|
||||||
s_wait_timer = 0;
|
s_wait_timer = 0;
|
||||||
@ -1707,7 +1707,7 @@ process_message(void)
|
|||||||
static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
|
static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GetMessage(&msg, NULL, 0, 0);
|
pGetMessage(&msg, NULL, 0, 0);
|
||||||
|
|
||||||
#ifdef FEAT_OLE
|
#ifdef FEAT_OLE
|
||||||
/* Look after OLE Automation commands */
|
/* Look after OLE Automation commands */
|
||||||
@ -1718,7 +1718,7 @@ process_message(void)
|
|||||||
{
|
{
|
||||||
/* Message can't be ours, forward it. Fixes problem with Ultramon
|
/* Message can't be ours, forward it. Fixes problem with Ultramon
|
||||||
* 3.0.4 */
|
* 3.0.4 */
|
||||||
DispatchMessage(&msg);
|
pDispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1749,14 +1749,14 @@ process_message(void)
|
|||||||
if (msg.message == WM_USER)
|
if (msg.message == WM_USER)
|
||||||
{
|
{
|
||||||
MyTranslateMessage(&msg);
|
MyTranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
pDispatchMessage(&msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MSWIN_FIND_REPLACE
|
#ifdef MSWIN_FIND_REPLACE
|
||||||
/* Don't process messages used by the dialog */
|
/* Don't process messages used by the dialog */
|
||||||
if (s_findrep_hwnd != NULL && IsDialogMessage(s_findrep_hwnd, &msg))
|
if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg))
|
||||||
{
|
{
|
||||||
HandleMouseHide(msg.message, msg.lParam);
|
HandleMouseHide(msg.message, msg.lParam);
|
||||||
return;
|
return;
|
||||||
@ -1928,7 +1928,7 @@ process_message(void)
|
|||||||
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
|
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
|
||||||
NULL, NULL) == NULL)
|
NULL, NULL) == NULL)
|
||||||
#endif
|
#endif
|
||||||
DispatchMessage(&msg);
|
pDispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1943,7 +1943,7 @@ gui_mch_update(void)
|
|||||||
MSG msg;
|
MSG msg;
|
||||||
|
|
||||||
if (!s_busy_processing)
|
if (!s_busy_processing)
|
||||||
while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
|
while (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
|
||||||
&& !vim_is_input_buf_full())
|
&& !vim_is_input_buf_full())
|
||||||
process_message();
|
process_message();
|
||||||
}
|
}
|
||||||
@ -2019,7 +2019,7 @@ gui_mch_wait_for_chars(int wtime)
|
|||||||
KillTimer(NULL, s_wait_timer);
|
KillTimer(NULL, s_wait_timer);
|
||||||
|
|
||||||
/* Eat spurious WM_TIMER messages */
|
/* Eat spurious WM_TIMER messages */
|
||||||
while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
|
||||||
;
|
;
|
||||||
s_wait_timer = 0;
|
s_wait_timer = 0;
|
||||||
}
|
}
|
||||||
|
@ -1856,12 +1856,12 @@ AbortProc(HDC hdcPrn, int iCode)
|
|||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
|
||||||
while (!*bUserAbort && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
while (!*bUserAbort && pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||||
{
|
{
|
||||||
if (!hDlgPrint || !IsDialogMessage(hDlgPrint, &msg))
|
if (!hDlgPrint || !pIsDialogMessage(hDlgPrint, &msg))
|
||||||
{
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
pDispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return !*bUserAbort;
|
return !*bUserAbort;
|
||||||
@ -3132,10 +3132,10 @@ serverProcessPendingMessages(void)
|
|||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
|
||||||
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
while (pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||||
{
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
pDispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +152,14 @@ static PFNGCKLN s_pfnGetConsoleKeyboardLayoutName = NULL;
|
|||||||
# define wcsicmp(a, b) wcscmpi((a), (b))
|
# define wcsicmp(a, b) wcscmpi((a), (b))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Enable common dialogs input unicode from IME if posible. */
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage;
|
||||||
|
BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage;
|
||||||
|
BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage;
|
||||||
|
BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef FEAT_GUI_W32
|
#ifndef FEAT_GUI_W32
|
||||||
/* Win32 Console handles for input and output */
|
/* Win32 Console handles for input and output */
|
||||||
static HANDLE g_hConIn = INVALID_HANDLE_VALUE;
|
static HANDLE g_hConIn = INVALID_HANDLE_VALUE;
|
||||||
@ -3284,10 +3292,10 @@ mch_system_classic(char *cmd, int options)
|
|||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
|
||||||
if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
|
if (pPeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
|
||||||
{
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
pDispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
|
if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
|
||||||
break;
|
break;
|
||||||
|
@ -193,3 +193,17 @@ Trace(char *pszFormat, ...);
|
|||||||
#else
|
#else
|
||||||
# define vim_mkdir(x, y) mch_mkdir(x)
|
# define vim_mkdir(x, y) mch_mkdir(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Enable common dialogs input unicode from IME if posible. */
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
/* The variables are defined in os_win32.c. */
|
||||||
|
extern LRESULT (WINAPI *pDispatchMessage)(LPMSG);
|
||||||
|
extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT);
|
||||||
|
extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG);
|
||||||
|
extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT);
|
||||||
|
#else
|
||||||
|
# define pDispatchMessage DispatchMessage
|
||||||
|
# define pGetMessage GetMessage
|
||||||
|
# define pIsDialogMessage IsDialogMessage
|
||||||
|
# define pPeekMessage PeekMessage
|
||||||
|
#endif
|
||||||
|
@ -709,6 +709,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
277,
|
||||||
/**/
|
/**/
|
||||||
276,
|
276,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user