[PATCH v2] winex11.drv: Call ImeSetCompositionString after IME_SetResultString

Alex Kwak take-me-home at kakao.com
Sat Apr 2 10:12:12 CDT 2022


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 Kwak<take-me-home at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20220403/1e6ae9b0/attachment.htm>


More information about the wine-devel mailing list