Aric Stewart : imm32: Implement ImmUnregisterWord using loaded IME.

Alexandre Julliard julliard at winehq.org
Wed Apr 9 14:31:33 CDT 2008


Module: wine
Branch: master
Commit: 5ce9649f5a8b0be7655d14f73a100eb9dea31925
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5ce9649f5a8b0be7655d14f73a100eb9dea31925

Author: Aric Stewart <aric at codeweavers.com>
Date:   Wed Apr  9 09:42:29 2008 -0500

imm32: Implement ImmUnregisterWord using loaded IME.

---

 dlls/imm32/imm.c |   54 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 4ffb481..000052c 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -1805,11 +1805,28 @@ BOOL WINAPI ImmSimulateHotKey(HWND hWnd, DWORD dwHotKeyID)
 BOOL WINAPI ImmUnregisterWordA(
   HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszUnregister)
 {
-  FIXME("(%p, %s, %d, %s): stub\n",
-    hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszUnregister)
-  );
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
+    ImmHkl *immHkl = IMM_GetImmHkl(hKL);
+    TRACE("(%p, %s, %d, %s):\n", hKL, debugstr_a(lpszReading), dwStyle,
+            debugstr_a(lpszUnregister));
+    if (immHkl->hIME && immHkl->pImeUnregisterWord)
+    {
+        if (!is_kbd_ime_unicode(immHkl))
+            return immHkl->pImeUnregisterWord((LPCWSTR)lpszReading,dwStyle,
+                                              (LPCWSTR)lpszUnregister);
+        else
+        {
+            LPWSTR lpszwReading = strdupAtoW(lpszReading);
+            LPWSTR lpszwUnregister = strdupAtoW(lpszUnregister);
+            BOOL rc;
+
+            rc = immHkl->pImeUnregisterWord(lpszwReading,dwStyle,lpszwUnregister);
+            HeapFree(GetProcessHeap(),0,lpszwReading);
+            HeapFree(GetProcessHeap(),0,lpszwUnregister);
+            return rc;
+        }
+    }
+    else
+        return FALSE;
 }
 
 /***********************************************************************
@@ -1818,11 +1835,28 @@ BOOL WINAPI ImmUnregisterWordA(
 BOOL WINAPI ImmUnregisterWordW(
   HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszUnregister)
 {
-  FIXME("(%p, %s, %d, %s): stub\n",
-    hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszUnregister)
-  );
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
+    ImmHkl *immHkl = IMM_GetImmHkl(hKL);
+    TRACE("(%p, %s, %d, %s):\n", hKL, debugstr_w(lpszReading), dwStyle,
+            debugstr_w(lpszUnregister));
+    if (immHkl->hIME && immHkl->pImeUnregisterWord)
+    {
+        if (is_kbd_ime_unicode(immHkl))
+            return immHkl->pImeUnregisterWord(lpszReading,dwStyle,lpszUnregister);
+        else
+        {
+            LPSTR lpszaReading = strdupWtoA(lpszReading);
+            LPSTR lpszaUnregister = strdupWtoA(lpszUnregister);
+            BOOL rc;
+
+            rc = immHkl->pImeUnregisterWord((LPCWSTR)lpszaReading,dwStyle,
+                                            (LPCWSTR)lpszaUnregister);
+            HeapFree(GetProcessHeap(),0,lpszaReading);
+            HeapFree(GetProcessHeap(),0,lpszaUnregister);
+            return rc;
+        }
+    }
+    else
+        return FALSE;
 }
 
 /***********************************************************************




More information about the wine-cvs mailing list