mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 00:45:24 +00:00
[IMM32] Fix ImmSetActiveContext
CORE-11700
This commit is contained in:
parent
2865423abe
commit
962c4557b5
1 changed files with 10 additions and 10 deletions
|
@ -477,6 +477,7 @@ BOOL WINAPI ImmActivateLayout(HKL hKL)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Win: Internal_CtfImeSetActiveContextAlways */
|
||||||
static VOID APIENTRY Imm32CiceroSetActiveContext(HIMC hIMC, BOOL fActive, HWND hWnd, HKL hKL)
|
static VOID APIENTRY Imm32CiceroSetActiveContext(HIMC hIMC, BOOL fActive, HWND hWnd, HKL hKL)
|
||||||
{
|
{
|
||||||
TRACE("We have to do something\n");
|
TRACE("We have to do something\n");
|
||||||
|
@ -1129,9 +1130,10 @@ BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
|
||||||
PCLIENTIMC pClientImc;
|
PCLIENTIMC pClientImc;
|
||||||
LPINPUTCONTEXTDX pIC;
|
LPINPUTCONTEXTDX pIC;
|
||||||
PIMEDPI pImeDpi;
|
PIMEDPI pImeDpi;
|
||||||
|
HIMC hOldIMC;
|
||||||
HKL hKL;
|
HKL hKL;
|
||||||
BOOL fOpen = FALSE;
|
BOOL fOpen = FALSE;
|
||||||
DWORD dwConversion = 0, iShow = ISC_SHOWUIALL;
|
DWORD dwConversion = 0, dwShowFlags = ISC_SHOWUIALL;
|
||||||
HWND hwndDefIME;
|
HWND hwndDefIME;
|
||||||
|
|
||||||
TRACE("(%p, %p, %d)\n", hWnd, hIMC, fActive);
|
TRACE("(%p, %p, %d)\n", hWnd, hIMC, fActive);
|
||||||
|
@ -1144,7 +1146,7 @@ BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
|
||||||
if (!fActive)
|
if (!fActive)
|
||||||
{
|
{
|
||||||
if (pClientImc)
|
if (pClientImc)
|
||||||
pClientImc->dwFlags &= ~CLIENTIMC_UNKNOWN4;
|
pClientImc->dwFlags &= ~CLIENTIMC_UNKNOWN5;
|
||||||
}
|
}
|
||||||
else if (hIMC)
|
else if (hIMC)
|
||||||
{
|
{
|
||||||
|
@ -1162,7 +1164,7 @@ BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
|
||||||
pClientImc->dwFlags |= CLIENTIMC_UNKNOWN5;
|
pClientImc->dwFlags |= CLIENTIMC_UNKNOWN5;
|
||||||
|
|
||||||
if (pIC->dwUIFlags & 2)
|
if (pIC->dwUIFlags & 2)
|
||||||
iShow = (ISC_SHOWUIGUIDELINE | ISC_SHOWUIALLCANDIDATEWINDOW);
|
dwShowFlags = (ISC_SHOWUIGUIDELINE | ISC_SHOWUIALLCANDIDATEWINDOW);
|
||||||
|
|
||||||
fOpen = pIC->fOpen;
|
fOpen = pIC->fOpen;
|
||||||
dwConversion = pIC->fdwConversion;
|
dwConversion = pIC->fdwConversion;
|
||||||
|
@ -1171,18 +1173,16 @@ BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hIMC = ImmGetSaveContext(hWnd, 1);
|
hOldIMC = ImmGetSaveContext(hWnd, 1);
|
||||||
pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
|
pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hOldIMC);
|
||||||
if (pIC)
|
if (pIC)
|
||||||
{
|
{
|
||||||
pIC->hWnd = hWnd;
|
pIC->hWnd = hWnd;
|
||||||
ImmUnlockIMC(hIMC);
|
ImmUnlockIMC(hOldIMC);
|
||||||
}
|
}
|
||||||
hIMC = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hKL = GetKeyboardLayout(0);
|
hKL = GetKeyboardLayout(0);
|
||||||
|
|
||||||
if (IS_CICERO_MODE() && !IS_16BIT_MODE())
|
if (IS_CICERO_MODE() && !IS_16BIT_MODE())
|
||||||
{
|
{
|
||||||
Imm32CiceroSetActiveContext(hIMC, fActive, hWnd, hKL);
|
Imm32CiceroSetActiveContext(hIMC, fActive, hWnd, hKL);
|
||||||
|
@ -1199,7 +1199,7 @@ BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
|
||||||
|
|
||||||
if (IsWindow(hWnd))
|
if (IsWindow(hWnd))
|
||||||
{
|
{
|
||||||
SendMessageW(hWnd, WM_IME_SETCONTEXT, fActive, iShow);
|
SendMessageW(hWnd, WM_IME_SETCONTEXT, fActive, dwShowFlags);
|
||||||
if (fActive)
|
if (fActive)
|
||||||
NtUserNotifyIMEStatus(hWnd, fOpen, dwConversion);
|
NtUserNotifyIMEStatus(hWnd, fOpen, dwConversion);
|
||||||
}
|
}
|
||||||
|
@ -1207,7 +1207,7 @@ BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
|
||||||
{
|
{
|
||||||
hwndDefIME = ImmGetDefaultIMEWnd(NULL);
|
hwndDefIME = ImmGetDefaultIMEWnd(NULL);
|
||||||
if (hwndDefIME)
|
if (hwndDefIME)
|
||||||
SendMessageW(hwndDefIME, WM_IME_SETCONTEXT, 0, iShow);
|
SendMessageW(hwndDefIME, WM_IME_SETCONTEXT, 0, dwShowFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pClientImc)
|
if (pClientImc)
|
||||||
|
|
Loading…
Reference in a new issue