mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 00:45:24 +00:00
[IMM32][SDK][USER32] Fix ImmFreeLayout parameter (#7195)
JIRA issue: CORE-19268 - Define ImmFreeLayout parameter special values (HKL_SWITCH_TO_NON_IME and HKL_RELEASE_IME) at <imm32_undoc.h>. - Make ImmFreeLayout parameter an HKL.
This commit is contained in:
parent
68a2322ad4
commit
dcf0788f59
5 changed files with 16 additions and 11 deletions
|
@ -111,20 +111,22 @@ BOOL WINAPI ImmLoadLayout(HKL hKL, PIMEINFOEX pImeInfoEx)
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* ImmFreeLayout (IMM32.@)
|
* ImmFreeLayout (IMM32.@)
|
||||||
|
*
|
||||||
|
* NOTE: HKL_SWITCH_TO_NON_IME and HKL_RELEASE_IME are special values for hKL.
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI ImmFreeLayout(DWORD dwUnknown)
|
BOOL WINAPI ImmFreeLayout(HKL hKL)
|
||||||
{
|
{
|
||||||
WCHAR szKBD[KL_NAMELENGTH];
|
WCHAR szKBD[KL_NAMELENGTH];
|
||||||
UINT iKL, cKLs;
|
UINT iKL, cKLs;
|
||||||
HKL hOldKL, hNewKL, *pList;
|
HKL hOldKL, *pList;
|
||||||
PIMEDPI pImeDpi;
|
PIMEDPI pImeDpi;
|
||||||
LANGID LangID;
|
LANGID LangID;
|
||||||
|
|
||||||
TRACE("(0x%lX)\n", dwUnknown);
|
TRACE("(%p)\n", hKL);
|
||||||
|
|
||||||
hOldKL = GetKeyboardLayout(0);
|
hOldKL = GetKeyboardLayout(0);
|
||||||
|
|
||||||
if (dwUnknown == 1)
|
if (hKL == HKL_SWITCH_TO_NON_IME)
|
||||||
{
|
{
|
||||||
if (!IS_IME_HKL(hOldKL))
|
if (!IS_IME_HKL(hOldKL))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -158,7 +160,7 @@ BOOL WINAPI ImmFreeLayout(DWORD dwUnknown)
|
||||||
LoadKeyboardLayoutW(L"00000409", KLF_ACTIVATE | 0x200);
|
LoadKeyboardLayoutW(L"00000409", KLF_ACTIVATE | 0x200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (dwUnknown == 2)
|
else if (hKL == HKL_RELEASE_IME)
|
||||||
{
|
{
|
||||||
RtlEnterCriticalSection(&gcsImeDpi);
|
RtlEnterCriticalSection(&gcsImeDpi);
|
||||||
Retry:
|
Retry:
|
||||||
|
@ -171,9 +173,8 @@ Retry:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hNewKL = UlongToHandle(dwUnknown);
|
if (IS_IME_HKL(hKL) && hKL != hOldKL)
|
||||||
if (IS_IME_HKL(hNewKL) && hNewKL != hOldKL)
|
Imm32ReleaseIME(hKL);
|
||||||
Imm32ReleaseIME(hNewKL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
@ stdcall ImmEnumRegisterWordW(long ptr wstr long wstr ptr)
|
@ stdcall ImmEnumRegisterWordW(long ptr wstr long wstr ptr)
|
||||||
@ stdcall ImmEscapeA(long ptr long ptr)
|
@ stdcall ImmEscapeA(long ptr long ptr)
|
||||||
@ stdcall ImmEscapeW(long ptr long ptr)
|
@ stdcall ImmEscapeW(long ptr long ptr)
|
||||||
@ stdcall ImmFreeLayout(long)
|
@ stdcall ImmFreeLayout(ptr)
|
||||||
@ stdcall ImmGenerateMessage(ptr)
|
@ stdcall ImmGenerateMessage(ptr)
|
||||||
@ stdcall ImmGetAppCompatFlags(ptr)
|
@ stdcall ImmGetAppCompatFlags(ptr)
|
||||||
@ stdcall ImmGetCandidateListA(long long ptr long)
|
@ stdcall ImmGetCandidateListA(long long ptr long)
|
||||||
|
|
|
@ -24,6 +24,10 @@ extern "C" {
|
||||||
#define IS_IME_KLID(dwKLID) ((((ULONG)(dwKLID)) & 0xF0000000) == IME_MASK)
|
#define IS_IME_KLID(dwKLID) ((((ULONG)(dwKLID)) & 0xF0000000) == IME_MASK)
|
||||||
#define IS_SUBST_KLID(dwKLID) ((((ULONG)(dwKLID)) & 0xF0000000) == SUBST_MASK)
|
#define IS_SUBST_KLID(dwKLID) ((((ULONG)(dwKLID)) & 0xF0000000) == SUBST_MASK)
|
||||||
|
|
||||||
|
/* The special values for ImmFreeLayout hKL */
|
||||||
|
#define HKL_SWITCH_TO_NON_IME ((HKL)UlongToHandle(1))
|
||||||
|
#define HKL_RELEASE_IME ((HKL)UlongToHandle(2))
|
||||||
|
|
||||||
typedef struct tagIMEINFOEX
|
typedef struct tagIMEINFOEX
|
||||||
{
|
{
|
||||||
HKL hkl;
|
HKL hkl;
|
||||||
|
|
|
@ -30,7 +30,7 @@ DEFINE_IMM_ENTRY(/*PINPUTCONTEXT*/ LPVOID, ImmLockIMC, (HIMC hIMC), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmUnlockIMC, (HIMC hIMC), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmUnlockIMC, (HIMC hIMC), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmLoadIME, (HKL hKL), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmLoadIME, (HKL hKL), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmSetOpenStatus, (HIMC hIMC, BOOL bOpen), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmSetOpenStatus, (HIMC hIMC, BOOL bOpen), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmFreeLayout, (DWORD dwFlags), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmFreeLayout, (HKL hKL), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmActivateLayout, (HKL hKL), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmActivateLayout, (HKL hKL), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmGetCandidateWindow, (HIMC hIMC, DWORD dwIndex, LPCANDIDATEFORM lpCandForm), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmGetCandidateWindow, (HIMC hIMC, DWORD dwIndex, LPCANDIDATEFORM lpCandForm), 0, NONVOID)
|
||||||
DEFINE_IMM_ENTRY(BOOL, ImmSetCandidateWindow, (HIMC hIMC, LPCANDIDATEFORM lpCandForm), 0, NONVOID)
|
DEFINE_IMM_ENTRY(BOOL, ImmSetCandidateWindow, (HIMC hIMC, LPCANDIDATEFORM lpCandForm), 0, NONVOID)
|
||||||
|
|
|
@ -717,7 +717,7 @@ static LRESULT ImeWnd_OnImeSystem(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IMS_FREELAYOUT:
|
case IMS_FREELAYOUT:
|
||||||
ret = IMM_FN(ImmFreeLayout)((DWORD)lParam);
|
ret = IMM_FN(ImmFreeLayout)((HKL)lParam);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x13:
|
case 0x13:
|
||||||
|
|
Loading…
Reference in a new issue