mirror of
https://github.com/reactos/reactos.git
synced 2025-05-18 16:51:18 +00:00
[IMM32] Fix and improve Imm32SelectInputContext
CORE-11700
This commit is contained in:
parent
edbeaa3c87
commit
b086f910d8
1 changed files with 17 additions and 21 deletions
|
@ -180,8 +180,8 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
LPCOMPOSITIONSTRING pCS;
|
||||
LOGFONTA LogFontA;
|
||||
LOGFONTW LogFontW;
|
||||
BOOL fOpen, bIsNewHKLIme = TRUE, bIsOldHKLIme = TRUE, bClientWide, bNewDpiWide;
|
||||
DWORD cbNewPrivate = 0, cbOldPrivate = 0, dwConversion, dwSentence, dwSize, dwNewSize;
|
||||
BOOL fOldOpen, bIsNewHKLIme = TRUE, bIsOldHKLIme = TRUE, bClientWide, bNewDpiWide;
|
||||
DWORD cbNewPrivate = 0, cbOldPrivate = 0, dwOldConversion, dwOldSentence, dwSize, dwNewSize;
|
||||
PIMEDPI pNewImeDpi = NULL, pOldImeDpi = NULL;
|
||||
HANDLE hPrivate;
|
||||
PIME_STATE pNewState = NULL, pOldState = NULL;
|
||||
|
@ -205,14 +205,11 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
pClientImc->uCodePage = CP_ACP;
|
||||
}
|
||||
|
||||
if (cbNewPrivate < sizeof(DWORD))
|
||||
cbNewPrivate = sizeof(DWORD);
|
||||
|
||||
if (pOldImeDpi)
|
||||
cbOldPrivate = pOldImeDpi->ImeInfo.dwPrivateDataSize;
|
||||
|
||||
if (cbOldPrivate < sizeof(DWORD))
|
||||
cbOldPrivate = sizeof(DWORD);
|
||||
cbNewPrivate = max(cbNewPrivate, sizeof(DWORD));
|
||||
cbOldPrivate = max(cbOldPrivate, sizeof(DWORD));
|
||||
|
||||
if (pClientImc->hKL == hOldKL)
|
||||
{
|
||||
|
@ -226,13 +223,10 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
pClientImc->hKL = NULL;
|
||||
}
|
||||
|
||||
if (CtfImmIsTextFrameServiceDisabled())
|
||||
if (CtfImmIsTextFrameServiceDisabled() && IS_CICERO_MODE() && !IS_16BIT_MODE())
|
||||
{
|
||||
if (IS_IMM_MODE() && !IS_CICERO_MODE())
|
||||
{
|
||||
bIsNewHKLIme = IS_IME_HKL(hNewKL);
|
||||
bIsOldHKLIme = IS_IME_HKL(hOldKL);
|
||||
}
|
||||
bIsNewHKLIme = IS_IME_HKL(hNewKL);
|
||||
bIsOldHKLIme = IS_IME_HKL(hOldKL);
|
||||
}
|
||||
|
||||
pIC = (LPINPUTCONTEXTDX)Imm32InternalLockIMC(hIMC, FALSE);
|
||||
|
@ -250,9 +244,9 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
}
|
||||
else
|
||||
{
|
||||
dwConversion = pIC->fdwConversion;
|
||||
dwSentence = pIC->fdwSentence;
|
||||
fOpen = pIC->fOpen;
|
||||
dwOldConversion = pIC->fdwConversion;
|
||||
dwOldSentence = pIC->fdwSentence;
|
||||
fOldOpen = pIC->fOpen;
|
||||
|
||||
if (pNewImeDpi)
|
||||
{
|
||||
|
@ -359,7 +353,8 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
if (pOldState)
|
||||
{
|
||||
pOldState->fOpen = !!pIC->fOpen;
|
||||
pOldState->dwConversion = (pIC->fdwConversion & ~IME_CMODE_EUDC);
|
||||
pOldState->dwConversion = pIC->fdwConversion;
|
||||
pOldState->dwConversion &= ~IME_CMODE_EUDC;
|
||||
pOldState->dwSentence = pIC->fdwSentence;
|
||||
pOldState->dwInit = pIC->fdwInit;
|
||||
}
|
||||
|
@ -376,7 +371,8 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
pIC->fOpen = pNewState->fOpen;
|
||||
}
|
||||
|
||||
pIC->fdwConversion = (pNewState->dwConversion & ~IME_CMODE_EUDC);
|
||||
pIC->fdwConversion = pNewState->dwConversion;
|
||||
pIC->fdwConversion &= ~IME_CMODE_EUDC;
|
||||
pIC->fdwSentence = pNewState->dwSentence;
|
||||
pIC->fdwInit = pNewState->dwInit;
|
||||
}
|
||||
|
@ -396,11 +392,11 @@ VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
|
|||
}
|
||||
|
||||
pIC->dwChange = 0;
|
||||
if (pIC->fOpen != fOpen)
|
||||
if (pIC->fOpen != fOldOpen)
|
||||
pIC->dwChange |= INPUTCONTEXTDX_CHANGE_OPEN;
|
||||
if (pIC->fdwConversion != dwConversion)
|
||||
if (pIC->fdwConversion != dwOldConversion)
|
||||
pIC->dwChange |= INPUTCONTEXTDX_CHANGE_CONVERSION;
|
||||
if (pIC->fdwSentence != dwSentence)
|
||||
if (pIC->fdwSentence != dwOldSentence)
|
||||
pIC->dwChange |= INPUTCONTEXTDX_CHANGE_SENTENCE;
|
||||
|
||||
ImmUnlockIMC(hIMC);
|
||||
|
|
Loading…
Reference in a new issue