Module: wine Branch: master Commit: 5ce9649f5a8b0be7655d14f73a100eb9dea31925 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5ce9649f5a8b0be7655d14f73a...
Author: Aric Stewart aric@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; }
/***********************************************************************