Kusanagi Kouichi : winex11: Generate WM_IME_ENDCOMPOSITION when composition string is canceled.

Alexandre Julliard julliard at winehq.org
Thu Apr 24 06:24:11 CDT 2008


Module: wine
Branch: master
Commit: 4baf6e7edca4a377efdd38a3ab966ea4835b1378
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4baf6e7edca4a377efdd38a3ab966ea4835b1378

Author: Kusanagi Kouichi <slash at ma.neweb.ne.jp>
Date:   Thu Apr 24 08:29:54 2008 +0900

winex11: Generate WM_IME_ENDCOMPOSITION when composition string is canceled.

---

 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;




More information about the wine-cvs mailing list