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