Aric Stewart : imm32: If composition string is reduced to 0 characters hide composition window.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Aug 27 06:07:46 CDT 2007


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Mon Aug 27 18:08:38 2007 +0900

imm32: If composition string is reduced to 0 characters hide composition window.

---

 dlls/imm32/imm.c |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 26d0b51..ac5c6eb 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -74,7 +74,7 @@ static UINT WM_MSIME_DOCUMENTFEED;
  */
 static LRESULT WINAPI IME_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                                           LPARAM lParam);
-static void UpdateDataInDefaultIMEWindow(HWND hwnd);
+static void UpdateDataInDefaultIMEWindow(HWND hwnd, BOOL showable);
 static void ImmInternalPostIMEMessage(UINT, WPARAM, LPARAM);
 static void ImmInternalSetOpenStatus(BOOL fOpen);
 static HIMCC updateResultStr(HIMCC old, LPWSTR resultstr, DWORD len);
@@ -1672,7 +1672,7 @@ BOOL WINAPI ImmSetCompositionStringW(
         }
     }
 
-     UpdateDataInDefaultIMEWindow(hwndDefault);
+     UpdateDataInDefaultIMEWindow(hwndDefault,FALSE);
 
      ImmInternalPostIMEMessage(WM_IME_COMPOSITION, wParam, flags);
 
@@ -2033,9 +2033,24 @@ static void PaintDefaultIMEWnd(HWND hwnd)
     EndPaint(hwnd,&ps);
 }
 
-static void UpdateDataInDefaultIMEWindow(HWND hwnd)
+static void UpdateDataInDefaultIMEWindow(HWND hwnd, BOOL showable)
 {
+    LPCOMPOSITIONSTRING compstr;
+
+    if (root_context->IMC.hCompStr)
+        compstr = ImmLockIMCC(root_context->IMC.hCompStr);
+    else
+        compstr = NULL;
+
+    if (compstr == NULL || compstr->dwCompStrLen == 0)
+        ShowWindow(hwndDefault,SW_HIDE);
+    else if (showable)
+        ShowWindow(hwndDefault,SW_SHOWNOACTIVATE);
+
     RedrawWindow(hwnd,NULL,NULL,RDW_ERASENOW|RDW_INVALIDATE);
+
+    if (compstr != NULL)
+        ImmUnlockIMCC(root_context->IMC.hCompStr);
 }
 
 /*
@@ -2075,7 +2090,7 @@ static LRESULT WINAPI IME_WindowProc(HWND hwnd, UINT msg, WPARAM wParam,
             if (lParam & GCS_RESULTSTR)
                     IMM_PostResult(root_context);
             else
-                 UpdateDataInDefaultIMEWindow(hwnd);
+                 UpdateDataInDefaultIMEWindow(hwnd,TRUE);
             break;
         case WM_IME_STARTCOMPOSITION:
             TRACE("IME message %s, 0x%x, 0x%x\n",




More information about the wine-cvs mailing list