mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-14 17:07:16 +00:00
user32: Enable IsDialogMessageA() ASCII to Unicode mapping only when the user default lang ID is CJK.
Using GetSystemMetrics(SM_DBCSENABLED) may incorrectly enable ASCII to Unicode mapping in mixed locale environments. For example, when UserDefaultLCID is French(040c) but SystemDefaultLCID is Japanese(0411). Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55655
This commit is contained in:
parent
b000b65937
commit
8d5d413697
|
@ -807,6 +807,14 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetMessageA( MSG *msg, HWND hwnd, UINT first, UINT
|
|||
return (msg->message != WM_QUIT);
|
||||
}
|
||||
|
||||
static BOOL is_cjk(void)
|
||||
{
|
||||
int lang_id = PRIMARYLANGID(GetUserDefaultLangID());
|
||||
|
||||
if (lang_id == LANG_CHINESE || lang_id == LANG_JAPANESE || lang_id == LANG_KOREAN)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* IsDialogMessageA (USER32.@)
|
||||
|
@ -817,7 +825,7 @@ BOOL WINAPI IsDialogMessageA( HWND hwndDlg, LPMSG pmsg )
|
|||
enum wm_char_mapping mapping;
|
||||
MSG msg = *pmsg;
|
||||
|
||||
mapping = GetSystemMetrics( SM_DBCSENABLED ) ? WMCHAR_MAP_ISDIALOGMESSAGE : WMCHAR_MAP_NOMAPPING;
|
||||
mapping = is_cjk() ? WMCHAR_MAP_ISDIALOGMESSAGE : WMCHAR_MAP_NOMAPPING;
|
||||
if (!map_wparam_AtoW( msg.message, &msg.wParam, mapping ))
|
||||
return TRUE;
|
||||
return IsDialogMessageW( hwndDlg, &msg );
|
||||
|
|
Loading…
Reference in a new issue