Jacek Caban : winex11: Use X11DRV_CALL for XIM calls.
Alexandre Julliard
julliard at winehq.org
Wed May 4 16:14:45 CDT 2022
Module: wine
Branch: master
Commit: bf1d5d286b2c05ed6ba4db060ca905872fa3f621
URL: https://source.winehq.org/git/wine.git/?a=commit;h=bf1d5d286b2c05ed6ba4db060ca905872fa3f621
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon May 2 21:47:43 2022 +0200
winex11: Use X11DRV_CALL for XIM calls.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winex11.drv/ime.c | 9 ++++++---
dlls/winex11.drv/unixlib.h | 9 +++++++++
dlls/winex11.drv/x11drv.h | 4 ++--
dlls/winex11.drv/x11drv_main.c | 2 ++
dlls/winex11.drv/xim.c | 13 ++++++++-----
5 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c
index c1584930861..1656601577d 100644
--- a/dlls/winex11.drv/ime.c
+++ b/dlls/winex11.drv/ime.c
@@ -637,6 +637,7 @@ UINT WINAPI ImeToAsciiEx (UINT uVKey, UINT uScanCode, const LPBYTE lpbKeyState,
BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
{
+ struct xim_preedit_state_params preedit_params;
BOOL bRet = FALSE;
LPINPUTCONTEXT lpIMC;
@@ -680,7 +681,9 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
TRACE("IMC_SETOPENSTATUS\n");
bRet = TRUE;
- X11DRV_SetPreeditState(lpIMC->hWnd, lpIMC->fOpen);
+ preedit_params.hwnd = lpIMC->hWnd;
+ preedit_params.open = lpIMC->fOpen;
+ X11DRV_CALL( xim_preedit_state, &preedit_params );
if (!lpIMC->fOpen)
{
LPIMEPRIVATE myPrivate;
@@ -688,7 +691,7 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
myPrivate = ImmLockIMCC(lpIMC->hPrivate);
if (myPrivate->bInComposition)
{
- X11DRV_ForceXIMReset(lpIMC->hWnd);
+ X11DRV_CALL( xim_reset, lpIMC->hWnd );
GenerateIMEMessage(hIMC, WM_IME_ENDCOMPOSITION, 0, 0);
myPrivate->bInComposition = FALSE;
}
@@ -764,7 +767,7 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
TRACE("CPS_CANCEL\n");
- X11DRV_ForceXIMReset(lpIMC->hWnd);
+ X11DRV_CALL( xim_reset, lpIMC->hWnd );
if (lpIMC->hCompStr)
ImmDestroyIMCC(lpIMC->hCompStr);
diff --git a/dlls/winex11.drv/unixlib.h b/dlls/winex11.drv/unixlib.h
index 062bb59c663..2a957af0f56 100644
--- a/dlls/winex11.drv/unixlib.h
+++ b/dlls/winex11.drv/unixlib.h
@@ -28,6 +28,8 @@ enum x11drv_funcs
unix_tablet_get_packet,
unix_tablet_info,
unix_tablet_load_info,
+ unix_xim_preedit_state,
+ unix_xim_reset,
unix_funcs_count,
};
@@ -59,6 +61,13 @@ struct tablet_info_params
void *output;
};
+/* x11drv_xim_preedit_state params */
+struct xim_preedit_state_params
+{
+ HWND hwnd;
+ BOOL open;
+};
+
/* DnD support */
struct format_entry
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 08bfa6dd1d5..c6e5044c110 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -827,8 +827,6 @@ extern BOOL X11DRV_InitXIM( const WCHAR *input_style ) DECLSPEC_HIDDEN;
extern XIC X11DRV_CreateIC(XIM xim, struct x11drv_win_data *data) DECLSPEC_HIDDEN;
extern void X11DRV_SetupXIM(void) DECLSPEC_HIDDEN;
extern void X11DRV_XIMLookupChars( const char *str, DWORD count ) DECLSPEC_HIDDEN;
-extern void X11DRV_ForceXIMReset(HWND hwnd) DECLSPEC_HIDDEN;
-extern void X11DRV_SetPreeditState(HWND hwnd, BOOL fOpen) DECLSPEC_HIDDEN;
#define XEMBED_MAPPED (1 << 0)
@@ -849,6 +847,8 @@ extern NTSTATUS x11drv_tablet_attach_queue( void *arg ) DECLSPEC_HIDDEN;
extern NTSTATUS x11drv_tablet_get_packet( void *arg ) DECLSPEC_HIDDEN;
extern NTSTATUS x11drv_tablet_load_info( void *arg ) DECLSPEC_HIDDEN;
extern NTSTATUS x11drv_tablet_info( void *arg ) DECLSPEC_HIDDEN;
+extern NTSTATUS x11drv_xim_preedit_state( void *arg ) DECLSPEC_HIDDEN;
+extern NTSTATUS x11drv_xim_reset( void *arg ) DECLSPEC_HIDDEN;
extern NTSTATUS WINAPI x11drv_post_drop( void *data, ULONG size ) DECLSPEC_HIDDEN;
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
index cc565bd30a7..22f0f0a729f 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -962,6 +962,8 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
x11drv_tablet_get_packet,
x11drv_tablet_info,
x11drv_tablet_load_info,
+ x11drv_xim_preedit_state,
+ x11drv_xim_reset,
};
diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
index ec4be2e0c5d..81f420891ad 100644
--- a/dlls/winex11.drv/xim.c
+++ b/dlls/winex11.drv/xim.c
@@ -241,7 +241,7 @@ static void XIMPreEditCaretCallback(XIC ic, XPointer client_data,
TRACE("Finished\n");
}
-void X11DRV_ForceXIMReset(HWND hwnd)
+NTSTATUS x11drv_xim_reset( void *hwnd )
{
XIC ic = X11DRV_get_ic(hwnd);
if (ic)
@@ -251,19 +251,21 @@ void X11DRV_ForceXIMReset(HWND hwnd)
leftover = XmbResetIC(ic);
XFree(leftover);
}
+ return 0;
}
-void X11DRV_SetPreeditState(HWND hwnd, BOOL fOpen)
+NTSTATUS x11drv_xim_preedit_state( void *arg )
{
+ struct xim_preedit_state_params *params = arg;
XIC ic;
XIMPreeditState state;
XVaNestedList attr;
- ic = X11DRV_get_ic(hwnd);
+ ic = X11DRV_get_ic( params->hwnd );
if (!ic)
- return;
+ return 0;
- if (fOpen)
+ if (params->open)
state = XIMPreeditEnable;
else
state = XIMPreeditDisable;
@@ -274,6 +276,7 @@ void X11DRV_SetPreeditState(HWND hwnd, BOOL fOpen)
XSetICValues(ic, XNPreeditAttributes, attr, NULL);
XFree(attr);
}
+ return 0;
}
More information about the wine-cvs
mailing list