[PATCH v2] dlls: Flush CompositionString after X11DRV_XIMLookupChars.

Alex Kwak take-me-home at kakao.com
Sat Mar 19 12:14:17 CDT 2022


Hello, Akihiro
Thanks for reviewing.

just now, I wrote a bug with logs.
( https://bugs.winehq.org/show_bug.cgi?id=52700 )

This is a problem that occurs in almost all Korean input method.
( except root style IME )

Best Regards,
Alex


22. 3. 19. 23:27에 Akihiro Sagawa 이(가) 쓴 글:
> On Thu, 17 Mar 2022 07:48:51 +0900, Alex Kwak wrote:
>> There is no flushing after X11DRV_XIMLookupChars on wine11xdrv. for
>> this reason, the characters of the GUI are not updated.
> [...]
>> diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
>> index 3994c2106cc..66c56c177ac 100644
>> --- a/dlls/winex11.drv/xim.c
>> +++ b/dlls/winex11.drv/xim.c
>> @@ -117,6 +117,16 @@ void X11DRV_XIMLookupChars( const char *str, DWORD count )
>>   
>>       IME_SetResultString(wcOutput, dwOutput);
>>       HeapFree(GetProcessHeap(), 0, wcOutput);
>> +
>> +    /*
>> +     * After then if `CompositionString` is remaining, flushing it.
>> +     * i.e., Korean
>> +     */
>> +    if (CompositionString)
>> +    {
>> +        IME_SetCompositionString(SCS_SETSTR, CompositionString,
>> +                                 dwCompStringLength, NULL, 0);
>> +    }
>>   }
>>   
>>   static BOOL XIMPreEditStateNotifyCallback(XIC xic, XPointer p, XPointer data)
> Hello Alex,
> How about filing a bug regarding this issue and attaching
> WINEDEBUG=xim,imm traces?
> What XIM server or Input Method does suffer from the issue?
>
>  From my point of view:
>   - If the XIM server supports XIMPreeditCallbacks,
>     CompositionString should be updated via XIMPreEditDrawCallback.
>   - If the XIM server doesn't support XIMPreeditCallbacks,
>     CompositionString is always NULL. So, your additional code doesn't
> make sense.
>
> At least, I can't reproduce the first issue with fcitx-mozc, a Japanese
> input method...
>
> Akihiro Sagawa
>



More information about the wine-devel mailing list