[1/2] imm32: Fix ImmAssociateContextEx Parameter Handling (try 2)
André Hentschel
nerv at dawncrow.de
Wed Apr 28 10:23:12 CDT 2010
As suggested by Nikolay Sivov:
- Now using switch()
- return value of ImmAssociateContext is not used because it always returns a handle even on windows
---
dlls/imm32/imm.c | 27 +++++++++++++++------------
dlls/imm32/tests/imm32.c | 8 ++++----
2 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 2a85b70..07aa067 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -516,30 +516,33 @@ 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)
- {
+ break;
+ case IACE_IGNORENOCONTEXT:
if (GetPropW(hWnd,szwWineIMCProperty))
ImmAssociateContext(hWnd,hIMC);
return TRUE;
- }
- else if (dwFlags == IACE_CHILDREN)
- {
+ break;
+ case IACE_CHILDREN:
EnumChildWindows(hWnd,_ImmAssociateContextExEnumProc,(LPARAM)hIMC);
return TRUE;
- }
- else
- {
- ERR("Unknown dwFlags 0x%x\n",dwFlags);
+ break;
+ 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 2d25e53..c68a17a 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);
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list