Module: wine Branch: master Commit: 3f02c27da96d45eb16d3efece4bd0d071fc2c4a4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3f02c27da96d45eb16d3efece4...
Author: Nigel Liang ncliang@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");