Hi,
Thanks for your reviewing. great helpful to me.
I submit a new patch reflecting feedback.
https://www.winehq.org/pipermail/wine-devel/2022-April/212602.html
Regards.,
Alex
22. 4. 2. 22:57에 Akihiro Sagawa 이(가) 쓴 글:
On Thu, 31 Mar 2022 04:36:18 +0900, Alex Kwak wrote:
IME_SetResultString function overwrite composition strings. so, next composition is not display on GUI. but, still have an xim. Therefore, there was a string that seemed to have disappeared in the middle of the input.
Therefore, change it as follows. When calling IME_SetResultString, if in a Composition state, no longer generate WM_IME_ENDCOMPOSITION and call back the previous Composition to recover the overwritten Composition.
Wine-Bug:https://bugs.winehq.org/show_bug.cgi?id=52700 Signed-off-by: Alex Kwaktake-me-home@kakao.com
v2: use updateCompStr instead IME_SetResultString.
Oops, the following implementation doesn't match with the subject. If I were you, I'd describe what I want to resolve instead of the way.
dlls/winex11.drv/ime.c | 21 +++++++++++++++++---- dlls/winex11.drv/x11drv.h | 3 ++- dlls/winex11.drv/xim.c | 3 ++- 3 files changed, 21 insertions(+), 6 deletions(-)
[...]
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index f389f3e0836..ca077caa45c 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -290,7 +290,8 @@ extern void IME_UpdateAssociation(HWND focus) DECLSPEC_HIDDEN; extern BOOL IME_SetCompositionString(DWORD dwIndex, LPCVOID lpComp, DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen) DECLSPEC_HIDDEN; -extern void IME_SetResultString(LPWSTR lpResult, DWORD dwResultlen) DECLSPEC_HIDDEN; +extern void IME_SetResultString(LPWSTR lpResult, DWORD dwResultLen,
LPCVOID compStr, DWORD compStrLen) DECLSPEC_HIDDEN;
Though IME_SetCompositionString() uses LPCVOID and byte unit, I'd suggest you to use const WCHAR* for the third parameter and WCHAR unit for the fourth one. It will avoid the type casting and divisions in IME_SetResultString function. Moreover, it's consistent with exisiting parameters, i.e. wcOutput's type and dwOutput's unit.
Other points look good to me. Just one more effort.
Akihiro Sagawa