On 4/23/2010 16:14, André Hentschel wrote:
---
  dlls/imm32/imm.c         |   13 ++++++++++---
  dlls/imm32/tests/imm32.c |    8 ++++----
  2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 2a85b70..2fd6477 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -516,12 +516,19 @@ 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;
+
+    if (!dwFlags)
+    {
+        ImmAssociateContext(hWnd,hIMC);
+        return TRUE;
+    }
+    else if (dwFlags == IACE_DEFAULT)
      {
          ImmAssociateContext(hWnd,IMM_GetThreadData()->defaultContext);
          return TRUE;
@@ -539,7 +546,7 @@ BOOL WINAPI ImmAssociateContextEx(HWND hWnd, HIMC hIMC, 
DWORD dwFlags)
      }
      else
      {
-        ERR("Unknown dwFlags 0x%x\n",dwFlags);
+        FIXME("Unknown dwFlags 0x%x\n",dwFlags);
          return FALSE;
      }
  }
Some comments for this. Why return value from ImmAssociateContext is never used? Also it nicely turns to switch() for this dwFlags parameter, but it's a matter of taste.



Reply via email to