Skip to content

Commit 0af5865

Browse files
authored
[IMM32] Rewrite ImmSetCandidateWindow (reactos#3884)
Implementing Japanese input... CORE-11700
1 parent f26614a commit 0af5865

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

dll/win32/imm32/imm.c

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3452,29 +3452,34 @@ LRESULT WINAPI ImmRequestMessageW(HIMC hIMC, WPARAM wParam, LPARAM lParam)
34523452
BOOL WINAPI ImmSetCandidateWindow(
34533453
HIMC hIMC, LPCANDIDATEFORM lpCandidate)
34543454
{
3455-
InputContextData *data = get_imc_data(hIMC);
3455+
#define MAX_CANDIDATEFORM 4
3456+
DWORD dwImeThreadId, dwThreadId;
3457+
HWND hWnd;
3458+
LPINPUTCONTEXT pIC;
34563459

34573460
TRACE("(%p, %p)\n", hIMC, lpCandidate);
34583461

3459-
if (!data || !lpCandidate)
3462+
if (lpCandidate->dwIndex >= MAX_CANDIDATEFORM)
34603463
return FALSE;
34613464

3462-
if (IMM_IsCrossThreadAccess(NULL, hIMC))
3465+
dwImeThreadId = Imm32QueryInputContext(hIMC, 1);
3466+
dwThreadId = GetCurrentThreadId();
3467+
if (dwImeThreadId != dwThreadId)
34633468
return FALSE;
34643469

3465-
TRACE("\t%x, %x, %s, %s\n",
3466-
lpCandidate->dwIndex, lpCandidate->dwStyle,
3467-
wine_dbgstr_point(&lpCandidate->ptCurrentPos),
3468-
wine_dbgstr_rect(&lpCandidate->rcArea));
3469-
3470-
if (lpCandidate->dwIndex >= ARRAY_SIZE(data->IMC.cfCandForm))
3470+
pIC = ImmLockIMC(hIMC);
3471+
if (pIC == NULL)
34713472
return FALSE;
34723473

3473-
data->IMC.cfCandForm[lpCandidate->dwIndex] = *lpCandidate;
3474-
ImmNotifyIME(hIMC, NI_CONTEXTUPDATED, 0, IMC_SETCANDIDATEPOS);
3475-
ImmInternalSendIMENotify(data, IMN_SETCANDIDATEPOS, 1 << lpCandidate->dwIndex);
3474+
hWnd = pIC->hWnd;
3475+
pIC->cfCandForm[lpCandidate->dwIndex] = *lpCandidate;
3476+
3477+
ImmUnlockIMC(hIMC);
34763478

3479+
Imm32NotifyAction(hIMC, hWnd, NI_CONTEXTUPDATED, 0, IMC_SETCANDIDATEPOS,
3480+
IMN_SETCANDIDATEPOS, (1 << lpCandidate->dwIndex));
34773481
return TRUE;
3482+
#undef MAX_CANDIDATEFORM
34783483
}
34793484

34803485
/***********************************************************************

0 commit comments

Comments
 (0)