Module: wine Branch: master Commit: 25cb21de442e0c7c3b42db99191106a6792275e7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=25cb21de442e0c7c3b42db9919...
Author: Aric Stewart aric@codeweavers.com Date: Wed Apr 9 09:42:15 2008 -0500
imm32: Implement ImmRegisterWord 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 831f3d2..4ffb481 100644 --- a/dlls/imm32/imm.c +++ b/dlls/imm32/imm.c @@ -1486,11 +1486,28 @@ BOOL WINAPI ImmNotifyIME( BOOL WINAPI ImmRegisterWordA( HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszRegister) { - FIXME("(%p, %s, %d, %s): stub\n", - hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszRegister) - ); - 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(lpszRegister)); + if (immHkl->hIME && immHkl->pImeRegisterWord) + { + if (!is_kbd_ime_unicode(immHkl)) + return immHkl->pImeRegisterWord((LPCWSTR)lpszReading,dwStyle, + (LPCWSTR)lpszRegister); + else + { + LPWSTR lpszwReading = strdupAtoW(lpszReading); + LPWSTR lpszwRegister = strdupAtoW(lpszRegister); + BOOL rc; + + rc = immHkl->pImeRegisterWord(lpszwReading,dwStyle,lpszwRegister); + HeapFree(GetProcessHeap(),0,lpszwReading); + HeapFree(GetProcessHeap(),0,lpszwRegister); + return rc; + } + } + else + return FALSE; }
/*********************************************************************** @@ -1499,11 +1516,28 @@ BOOL WINAPI ImmRegisterWordA( BOOL WINAPI ImmRegisterWordW( HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszRegister) { - FIXME("(%p, %s, %d, %s): stub\n", - hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszRegister) - ); - 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(lpszRegister)); + if (immHkl->hIME && immHkl->pImeRegisterWord) + { + if (is_kbd_ime_unicode(immHkl)) + return immHkl->pImeRegisterWord(lpszReading,dwStyle,lpszRegister); + else + { + LPSTR lpszaReading = strdupWtoA(lpszReading); + LPSTR lpszaRegister = strdupWtoA(lpszRegister); + BOOL rc; + + rc = immHkl->pImeRegisterWord((LPCWSTR)lpszaReading,dwStyle, + (LPCWSTR)lpszaRegister); + HeapFree(GetProcessHeap(),0,lpszaReading); + HeapFree(GetProcessHeap(),0,lpszaRegister); + return rc; + } + } + else + return FALSE; }
/***********************************************************************