winex11.drv: Generate WM_IME_ENDCOMPOSITION when composition string is canceled.

Kusanagi Kouichi slash at ma.neweb.ne.jp
Wed Apr 23 18:29:54 CDT 2008


When composition string is canceled, WM_IME_ENDCOMPOSITION should be
generated, not WM_IME_COMPOSITION.
---
 dlls/winex11.drv/ime.c |   18 ++++++------------
 1 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c
index c3e5ccf..6614213 100644
--- a/dlls/winex11.drv/ime.c
+++ b/dlls/winex11.drv/ime.c
@@ -769,25 +769,19 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
                 case CPS_REVERT: FIXME("CPS_REVERT\n"); break;
                 case CPS_CANCEL:
                 {
-                    BOOL send;
-                    LPCOMPOSITIONSTRING lpCompStr;
+                    LPIMEPRIVATE myPrivate;
 
                     TRACE("CPS_CANCEL\n");
 
                     X11DRV_ForceXIMReset(lpIMC->hWnd);
 
-                    lpCompStr = ImmLockIMCC(lpIMC->hCompStr);
-                    send = (lpCompStr->dwCompStrLen != 0);
-                    ImmUnlockIMCC(lpIMC->hCompStr);
-
-                    if (send)
+                    myPrivate = (LPIMEPRIVATE)ImmLockIMCC(lpIMC->hPrivate);
+                    if (myPrivate->bInComposition)
                     {
-                        HIMCC newCompStr;
-                        newCompStr = updateCompStr(lpIMC->hCompStr, NULL, 0);
-                        ImmDestroyIMCC(lpIMC->hCompStr);
-                        lpIMC->hCompStr = newCompStr;
-                        GenerateIMEMessage(hIMC, WM_IME_COMPOSITION, 0, GCS_COMPSTR);
+                        GenerateIMEMessage(hIMC, WM_IME_ENDCOMPOSITION, 0, 0);
+                        myPrivate->bInComposition = FALSE;
                     }
+                    ImmUnlockIMCC(lpIMC->hPrivate);
                     bRet = TRUE;
                 }
                 break;
-- 
1.5.5.1




More information about the wine-patches mailing list