[PATCH] winex11.drv: Take into account position of preedit area in
PreEditCaretCallback
Nigel Liang
ncliang at gmail.com
Tue Jul 24 18:53:54 CDT 2007
diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
index 9e2d232..6cddc79 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 i
TRACE("PreEditStartCallback %p\n",ic);
X11DRV_ImmSetOpenStatus(TRUE);
ximInComposeMode = TRUE;
+ SendMessageW(((InputContextData*)root_context)->IMC.hWnd,
+ EM_GETSEL, NULL, &dwPreeditPos);
return -1;
}
@@ -284,6 +287,7 @@ static void XIMPreEditDoneCallback(XIC i
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
break;
}
SendMessageW(((InputContextData*)root_context)->IMC.hWnd,
- EM_SETSEL, pos, pos);
+ EM_SETSEL, dwPreeditPos + pos, dwPreeditPos + pos);
P_C->position = pos;
}
TRACE("Finished\n");
--
1.4.1
More information about the wine-patches
mailing list