Hi, I'd suggest to split the patch into two, since you are changing 2 different components at once. Also maybe you could write a small test for the riched part. Bernhard Alex Kwak <take-me-home(a)kakao.com> schrieb am Sa., 19. März 2022, 18:14:
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