Module: wine Branch: master Commit: 37901a6592f3dfd2f03a007aa3fb25e1e03cf19b URL: http://source.winehq.org/git/wine.git/?a=commit;h=37901a6592f3dfd2f03a007aa3...
Author: ByeongSik Jeon bsjeon@hanmail.net Date: Fri May 2 12:51:04 2008 +0900
imm32: Updated implementation of the ImmGetConversionList{A|W}.
---
dlls/imm32/imm.c | 36 ++++++++++++++++++++++++++++++------ 1 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c index f382f2b..8b539de 100644 --- a/dlls/imm32/imm.c +++ b/dlls/imm32/imm.c @@ -1249,9 +1249,21 @@ DWORD WINAPI ImmGetConversionListA( return immHkl->pImeConversionList(hIMC,(LPCWSTR)pSrc,lpDst,dwBufLen,uFlag); else { - FIXME("A procedure called with W ime back end\n"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; + LPCANDIDATELIST lpwDst; + DWORD ret = 0, len; + LPWSTR pwSrc = strdupAtoW(pSrc); + + len = immHkl->pImeConversionList(hIMC, pwSrc, NULL, 0, uFlag); + lpwDst = HeapAlloc(GetProcessHeap(), 0, len); + if ( lpwDst ) + { + immHkl->pImeConversionList(hIMC, pwSrc, lpwDst, len, uFlag); + ret = convert_candidatelist_WtoA( lpwDst, lpDst, dwBufLen); + HeapFree(GetProcessHeap(), 0, lpwDst); + } + HeapFree(GetProcessHeap(), 0, pwSrc); + + return ret; } } else @@ -1275,9 +1287,21 @@ DWORD WINAPI ImmGetConversionListW( return immHkl->pImeConversionList(hIMC,pSrc,lpDst,dwBufLen,uFlag); else { - FIXME("W procedure called with A ime back end\n"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; + LPCANDIDATELIST lpaDst; + DWORD ret = 0, len; + LPSTR paSrc = strdupWtoA(pSrc); + + len = immHkl->pImeConversionList(hIMC, (LPCWSTR)paSrc, NULL, 0, uFlag); + lpaDst = HeapAlloc(GetProcessHeap(), 0, len); + if ( lpaDst ) + { + immHkl->pImeConversionList(hIMC, (LPCWSTR)paSrc, lpaDst, len, uFlag); + ret = convert_candidatelist_AtoW( lpaDst, lpDst, dwBufLen); + HeapFree(GetProcessHeap(), 0, lpaDst); + } + HeapFree(GetProcessHeap(), 0, paSrc); + + return ret; } } else