Nigel Liang : winex11.drv: Take into account position of preedit area in PreEditCaretCallback.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jul 25 07:44:15 CDT 2007


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

Author: Nigel Liang <ncliang at gmail.com>
Date:   Tue Jul 24 16:53:54 2007 -0700

winex11.drv: Take into account position of preedit area in PreEditCaretCallback.

---

 dlls/winex11.drv/xim.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
index 9e2d232..a586af2 100644
--- a/dlls/winex11.drv/xim.c
+++ b/dlls/winex11.drv/xim.c
@@ -61,6 +61,7 @@ static LPBYTE CompositionString = NULL;
 static DWORD dwCompStringSize = 0;
 static LPBYTE ResultString = NULL;
 static DWORD dwResultStringSize = 0;
+static DWORD dwPreeditPos = 0;
 
 static HMODULE hImmDll = NULL;
 static HIMC (WINAPI *pImmAssociateContext)(HWND,HIMC);
@@ -276,6 +277,8 @@ static int XIMPreEditStartCallback(XIC ic, XPointer client_data, XPointer call_d
     TRACE("PreEditStartCallback %p\n",ic);
     X11DRV_ImmSetOpenStatus(TRUE);
     ximInComposeMode = TRUE;
+    SendMessageW(((InputContextData*)root_context)->IMC.hWnd,
+                 EM_GETSEL, 0, (LPARAM)&dwPreeditPos);
     return -1;
 }
 
@@ -284,6 +287,7 @@ static void XIMPreEditDoneCallback(XIC ic, XPointer client_data, XPointer call_d
     TRACE("PreeditDoneCallback %p\n",ic);
     ximInComposeMode = FALSE;
     X11DRV_ImmSetOpenStatus(FALSE);
+    dwPreeditPos = 0;
 }
 
 static void XIMPreEditDrawCallback(XIM ic, XPointer client_data,
@@ -362,7 +366,7 @@ static void XIMPreEditCaretCallback(XIC ic, XPointer client_data,
                 break;
         }
         SendMessageW(((InputContextData*)root_context)->IMC.hWnd,
-                     EM_SETSEL, pos, pos);
+                     EM_SETSEL, dwPreeditPos + pos, dwPreeditPos + pos);
         P_C->position = pos;
     }
     TRACE("Finished\n");




More information about the wine-cvs mailing list