mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
[IMM32] Rewrite ImmGetDefaultIMEWnd (#3821)
- Rewrite ImmGetDefaultIMEWnd function. - Add g_dwImm32Flags global variable. - Add Imm32QueryWindow helper function. - Implement CtfImmIsCiceroEnabled function. - Modify imm32.spec. CORE-11700
This commit is contained in:
parent
77e891b8ab
commit
3714ee269b
2 changed files with 25 additions and 7 deletions
|
@ -1005,6 +1005,11 @@ LRESULT WINAPI ImmEscapeW(
|
|||
#define ROUNDUP4(n) (((n) + 3) & ~3) /* DWORD alignment */
|
||||
|
||||
HANDLE g_hImm32Heap = NULL;
|
||||
DWORD g_dwImm32Flags = 0;
|
||||
|
||||
/* flags for g_dwImm32Flags */
|
||||
#define IMM32_FLAG_UNKNOWN 0x4
|
||||
#define IMM32_FLAG_CICERO_ENABLED 0x20
|
||||
|
||||
LPVOID APIENTRY Imm32HeapAlloc(DWORD dwFlags, DWORD dwBytes)
|
||||
{
|
||||
|
@ -1023,6 +1028,11 @@ Imm32GetThreadState(DWORD Routine)
|
|||
return NtUserGetThreadState(Routine);
|
||||
}
|
||||
|
||||
static DWORD_PTR APIENTRY Imm32QueryWindow(HWND hWnd, DWORD Index)
|
||||
{
|
||||
return NtUserQueryWindow(hWnd, Index);
|
||||
}
|
||||
|
||||
static DWORD APIENTRY
|
||||
Imm32UpdateInputContext(HIMC hIMC, DWORD Unknown1, PCLIENTIMC pClientImc)
|
||||
{
|
||||
|
@ -2096,14 +2106,21 @@ void WINAPI __wine_unregister_window(HWND hwnd)
|
|||
*/
|
||||
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
|
||||
{
|
||||
HWND ret;
|
||||
IMMThreadData* thread_data = IMM_GetThreadData(hWnd, 0);
|
||||
if (!thread_data)
|
||||
if (!(g_dwImm32Flags & IMM32_FLAG_UNKNOWN))
|
||||
return NULL;
|
||||
ret = thread_data->hwndDefault;
|
||||
LeaveCriticalSection(&threaddata_cs);
|
||||
TRACE("Default is %p\n",ret);
|
||||
return ret;
|
||||
|
||||
if (hWnd == NULL)
|
||||
return (HWND)Imm32GetThreadState(THREADSTATE_ACTIVEWINDOW);
|
||||
|
||||
return (HWND)Imm32QueryWindow(hWnd, QUERY_WINDOW_DEFAULT_IME);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CtfImmIsCiceroEnabled (IMM32.@)
|
||||
*/
|
||||
BOOL WINAPI CtfImmIsCiceroEnabled(VOID)
|
||||
{
|
||||
return !!(g_dwImm32Flags & IMM32_FLAG_CICERO_ENABLED);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
@ stdcall CtfImmIsCiceroEnabled()
|
||||
@ stdcall -stub ImmActivateLayout(long)
|
||||
@ stdcall ImmAssociateContext(ptr ptr)
|
||||
@ stdcall ImmAssociateContextEx(ptr ptr long)
|
||||
|
|
Loading…
Reference in a new issue