diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c index 2a85b70f80f..c708b83c90a 100644 --- a/dlls/imm32/imm.c +++ b/dlls/imm32/imm.c @@ -516,30 +516,30 @@ static BOOL CALLBACK _ImmAssociateContextExEnumProc(HWND hwnd, LPARAM lParam) */ BOOL WINAPI ImmAssociateContextEx(HWND hWnd, HIMC hIMC, DWORD dwFlags) { - TRACE("(%p, %p, %d): stub\n", hWnd, hIMC, dwFlags); + TRACE("(%p, %p, 0x%x):\n", hWnd, hIMC, dwFlags); if (!IMM_GetThreadData()->defaultContext) IMM_GetThreadData()->defaultContext = ImmCreateContext(); - if (dwFlags == IACE_DEFAULT) + if (!hWnd) return FALSE; + + switch (dwFlags) { + case 0: + ImmAssociateContext(hWnd,hIMC); + return TRUE; + case IACE_DEFAULT: ImmAssociateContext(hWnd,IMM_GetThreadData()->defaultContext); return TRUE; - } - else if (dwFlags == IACE_IGNORENOCONTEXT) - { + case IACE_IGNORENOCONTEXT: if (GetPropW(hWnd,szwWineIMCProperty)) ImmAssociateContext(hWnd,hIMC); return TRUE; - } - else if (dwFlags == IACE_CHILDREN) - { + case IACE_CHILDREN: EnumChildWindows(hWnd,_ImmAssociateContextExEnumProc,(LPARAM)hIMC); return TRUE; - } - else - { - ERR("Unknown dwFlags 0x%x\n",dwFlags); + default: + FIXME("Unknown dwFlags 0x%x\n",dwFlags); return FALSE; } } diff --git a/dlls/imm32/tests/imm32.c b/dlls/imm32/tests/imm32.c index 2d25e53e56e..c68a17ae21e 100644 --- a/dlls/imm32/tests/imm32.c +++ b/dlls/imm32/tests/imm32.c @@ -330,20 +330,20 @@ static void test_ImmAssociateContextEx(void) rc = pImmAssociateContextEx(NULL, NULL, 0); ok(!rc, "ImmAssociateContextEx succeeded\n"); rc = pImmAssociateContextEx(hwnd, NULL, 0); - todo_wine ok(rc, "ImmAssociateContextEx failed\n"); + ok(rc, "ImmAssociateContextEx failed\n"); rc = pImmAssociateContextEx(NULL, imc, 0); ok(!rc, "ImmAssociateContextEx succeeded\n"); rc = pImmAssociateContextEx(hwnd, imc, 0); - todo_wine ok(rc, "ImmAssociateContextEx failed\n"); + ok(rc, "ImmAssociateContextEx failed\n"); retimc = ImmGetContext(hwnd); ok(retimc == imc, "handles should be the same\n"); ImmReleaseContext(hwnd,retimc); rc = pImmAssociateContextEx(hwnd, newimc, 0); - todo_wine ok(rc, "ImmAssociateContextEx failed\n"); + ok(rc, "ImmAssociateContextEx failed\n"); retimc = ImmGetContext(hwnd); - todo_wine ok(retimc == newimc, "handles should be the same\n"); + ok(retimc == newimc, "handles should be the same\n"); ImmReleaseContext(hwnd,retimc); rc = pImmAssociateContextEx(hwnd, NULL, IACE_DEFAULT);