mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
winex11-CandidateWindowPos: Rebase and re-enable.
This commit is contained in:
parent
45230b51db
commit
ad41ee0c01
@ -250,6 +250,7 @@ patch_enable_all ()
|
||||
enable_winemenubuilder_Desktop_Icon_Path="$1"
|
||||
enable_winemenubuilder_integration="$1"
|
||||
enable_wineps_drv_PostScript_Fixes="$1"
|
||||
enable_winex11_CandidateWindowPos="$1"
|
||||
enable_winex11_MWM_Decorations="$1"
|
||||
enable_winex11_UpdateLayeredWindow="$1"
|
||||
enable_winex11_Vulkan_support="$1"
|
||||
@ -777,6 +778,9 @@ patch_enable ()
|
||||
wineps.drv-PostScript_Fixes)
|
||||
enable_wineps_drv_PostScript_Fixes="$2"
|
||||
;;
|
||||
winex11-CandidateWindowPos)
|
||||
enable_winex11_CandidateWindowPos="$2"
|
||||
;;
|
||||
winex11-MWM_Decorations)
|
||||
enable_winex11_MWM_Decorations="$2"
|
||||
;;
|
||||
@ -3747,6 +3751,19 @@ if test "$enable_wineps_drv_PostScript_Fixes" -eq 1; then
|
||||
patch_apply wineps.drv-PostScript_Fixes/0004-wineps.drv-Add-support-for-GETFACENAME-and-DOWNLOADF.patch
|
||||
fi
|
||||
|
||||
# Patchset winex11-CandidateWindowPos
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#30938] Update a XIM candidate position when cursor location changes
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/user32/caret.c, dlls/user32/driver.c, dlls/win32u/driver.c, dlls/winex11.drv/init.c, dlls/winex11.drv/x11drv.h,
|
||||
# | dlls/winex11.drv/xim.c, include/wine/gdi_driver.h
|
||||
# |
|
||||
if test "$enable_winex11_CandidateWindowPos" -eq 1; then
|
||||
patch_apply winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch
|
||||
fi
|
||||
|
||||
# Patchset winex11-MWM_Decorations
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 916a85ecb934034c66c58a66befab5713ea9c28e Mon Sep 17 00:00:00 2001
|
||||
From 40af1acfcc95f7aeef48b6b57338a9365946af33 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Yan <felixonmars@gmail.com>
|
||||
Date: Tue, 23 Sep 2014 23:22:17 +0800
|
||||
Subject: [PATCH] winex11.drv: Update a candidate window's position with
|
||||
@ -17,12 +17,14 @@ is set to "over the spot" in the registry key:
|
||||
This patch was based on the original work by Muneyuki Noguchi, and
|
||||
received a lot of help from Sebastian Lackner.
|
||||
---
|
||||
dlls/user32/caret.c | 4 ++
|
||||
dlls/user32/driver.c | 17 ++++++++
|
||||
dlls/user32/user_private.h | 2 +
|
||||
dlls/winex11.drv/winex11.drv.spec | 1 +
|
||||
dlls/winex11.drv/xim.c | 72 ++++++++++++++++++++++++++++++-
|
||||
5 files changed, 95 insertions(+), 1 deletion(-)
|
||||
dlls/user32/caret.c | 4 +++
|
||||
dlls/user32/driver.c | 7 ++++
|
||||
dlls/win32u/driver.c | 5 +++
|
||||
dlls/winex11.drv/init.c | 1 +
|
||||
dlls/winex11.drv/x11drv.h | 1 +
|
||||
dlls/winex11.drv/xim.c | 72 ++++++++++++++++++++++++++++++++++++++-
|
||||
include/wine/gdi_driver.h | 4 ++-
|
||||
7 files changed, 92 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/caret.c b/dlls/user32/caret.c
|
||||
index 2da7e02ca1a..1dd3ff29de4 100644
|
||||
@ -54,18 +56,35 @@ index 2da7e02ca1a..1dd3ff29de4 100644
|
||||
}
|
||||
return ret;
|
||||
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
|
||||
index 36438fa44c8..4a52900feb6 100644
|
||||
index 0b386b0af21..f979630c707 100644
|
||||
--- a/dlls/user32/driver.c
|
||||
+++ b/dlls/user32/driver.c
|
||||
@@ -149,6 +149,7 @@ static const USER_DRIVER *load_driver(void)
|
||||
GET_USER_FUNC(WindowPosChanging);
|
||||
GET_USER_FUNC(WindowPosChanged);
|
||||
GET_USER_FUNC(SystemParametersInfo);
|
||||
+ GET_USER_FUNC(UpdateCandidatePos);
|
||||
GET_USER_FUNC(ThreadDetach);
|
||||
#undef GET_USER_FUNC
|
||||
}
|
||||
@@ -405,6 +406,10 @@ static BOOL CDECL nulldrv_SystemParametersInfo( UINT action, UINT int_param, voi
|
||||
@@ -362,6 +362,11 @@ static BOOL CDECL loaderdrv_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDW
|
||||
return load_driver()->pUpdateLayeredWindow( hwnd, info, window_rect );
|
||||
}
|
||||
|
||||
+static void CDECL loaderdrv_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect )
|
||||
+{
|
||||
+ load_driver()->pUpdateCandidatePos( hwnd, caret_rect );
|
||||
+}
|
||||
+
|
||||
static struct user_driver_funcs lazy_load_driver =
|
||||
{
|
||||
{ NULL },
|
||||
@@ -413,6 +418,8 @@ static struct user_driver_funcs lazy_load_driver =
|
||||
nulldrv_WindowPosChanged,
|
||||
/* system parameters */
|
||||
nulldrv_SystemParametersInfo,
|
||||
+ /* candidate pos functions */
|
||||
+ loaderdrv_UpdateCandidatePos,
|
||||
/* thread management */
|
||||
nulldrv_ThreadDetach
|
||||
};
|
||||
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
|
||||
index 15e7d3701f7..bcca0c30353 100644
|
||||
--- a/dlls/win32u/driver.c
|
||||
+++ b/dlls/win32u/driver.c
|
||||
@@ -986,6 +986,10 @@ static BOOL CDECL nulldrv_SystemParametersInfo( UINT action, UINT int_param, voi
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -76,73 +95,43 @@ index 36438fa44c8..4a52900feb6 100644
|
||||
static void CDECL nulldrv_ThreadDetach( void )
|
||||
{
|
||||
}
|
||||
@@ -461,10 +466,13 @@ static USER_DRIVER null_driver =
|
||||
nulldrv_WindowPosChanged,
|
||||
/* system parameters */
|
||||
nulldrv_SystemParametersInfo,
|
||||
+ /* candidate pos functions */
|
||||
+ nulldrv_UpdateCandidatePos,
|
||||
/* thread management */
|
||||
nulldrv_ThreadDetach
|
||||
@@ -1072,6 +1076,7 @@ void CDECL __wine_set_display_driver( struct user_driver_funcs *driver, UINT ver
|
||||
SET_USER_FUNC(WindowPosChanging);
|
||||
SET_USER_FUNC(WindowPosChanged);
|
||||
SET_USER_FUNC(SystemParametersInfo);
|
||||
+ SET_USER_FUNC(UpdateCandidatePos);
|
||||
SET_USER_FUNC(ThreadDetach);
|
||||
#undef SET_USER_FUNC
|
||||
|
||||
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c
|
||||
index 854221bf948..c9bef8d46d2 100644
|
||||
--- a/dlls/winex11.drv/init.c
|
||||
+++ b/dlls/winex11.drv/init.c
|
||||
@@ -425,6 +425,7 @@ static const struct user_driver_funcs x11drv_funcs =
|
||||
.pWindowPosChanging = X11DRV_WindowPosChanging,
|
||||
.pWindowPosChanged = X11DRV_WindowPosChanged,
|
||||
.pSystemParametersInfo = X11DRV_SystemParametersInfo,
|
||||
+ .pUpdateCandidatePos = X11DRV_UpdateCandidatePos,
|
||||
.pThreadDetach = X11DRV_ThreadDetach,
|
||||
};
|
||||
|
||||
+/* this line exists so that git won't apply this diff in the wrong place */
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 4b4ee8daaeb..182ca4dd857 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -240,6 +240,7 @@ extern void CDECL X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, UINT sw
|
||||
struct window_surface *surface ) DECLSPEC_HIDDEN;
|
||||
extern BOOL CDECL X11DRV_SystemParametersInfo( UINT action, UINT int_param, void *ptr_param,
|
||||
UINT flags ) DECLSPEC_HIDDEN;
|
||||
+extern void CDECL X11DRV_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect ) DECLSPEC_HIDDEN;
|
||||
extern void CDECL X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN;
|
||||
|
||||
/**********************************************************************
|
||||
* Lazy loading user driver
|
||||
@@ -612,6 +620,11 @@ static BOOL CDECL loaderdrv_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDW
|
||||
return load_driver()->pUpdateLayeredWindow( hwnd, info, window_rect );
|
||||
}
|
||||
|
||||
+static void CDECL loaderdrv_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect )
|
||||
+{
|
||||
+ load_driver()->pUpdateCandidatePos( hwnd, caret_rect );
|
||||
+}
|
||||
+
|
||||
static USER_DRIVER lazy_load_driver =
|
||||
{
|
||||
/* keyboard functions */
|
||||
@@ -664,6 +677,10 @@ static USER_DRIVER lazy_load_driver =
|
||||
nulldrv_WindowPosChanged,
|
||||
/* system parameters */
|
||||
nulldrv_SystemParametersInfo,
|
||||
+ /* candidate pos functions */
|
||||
+ loaderdrv_UpdateCandidatePos,
|
||||
/* thread management */
|
||||
nulldrv_ThreadDetach
|
||||
};
|
||||
+
|
||||
+/* this line exists so that git won't apply this diff in the wrong place */
|
||||
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
|
||||
index 1c7ac3355bc..f9d01fbb406 100644
|
||||
--- a/dlls/user32/user_private.h
|
||||
+++ b/dlls/user32/user_private.h
|
||||
@@ -111,6 +111,8 @@ typedef struct tagUSER_DRIVER {
|
||||
void (CDECL *pWindowPosChanged)(HWND,HWND,UINT,const RECT *,const RECT *,const RECT *,const RECT *,struct window_surface*);
|
||||
/* system parameters */
|
||||
BOOL (CDECL *pSystemParametersInfo)(UINT,UINT,void*,UINT);
|
||||
+ /* candidate pos functions */
|
||||
+ void (CDECL *pUpdateCandidatePos)(HWND,const RECT *);
|
||||
/* thread management */
|
||||
void (CDECL *pThreadDetach)(void);
|
||||
} USER_DRIVER;
|
||||
diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec
|
||||
index eb5f7cecc6c..108bf98f357 100644
|
||||
--- a/dlls/winex11.drv/winex11.drv.spec
|
||||
+++ b/dlls/winex11.drv/winex11.drv.spec
|
||||
@@ -43,6 +43,7 @@
|
||||
@ cdecl WindowPosChanging(long long long ptr ptr ptr ptr) X11DRV_WindowPosChanging
|
||||
@ cdecl WindowPosChanged(long long long ptr ptr ptr ptr ptr) X11DRV_WindowPosChanged
|
||||
@ cdecl SystemParametersInfo(long long ptr long) X11DRV_SystemParametersInfo
|
||||
+@ cdecl UpdateCandidatePos(long ptr) X11DRV_UpdateCandidatePos
|
||||
@ cdecl ThreadDetach() X11DRV_ThreadDetach
|
||||
|
||||
# WinTab32
|
||||
/* X11 driver internal functions */
|
||||
diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
|
||||
index 44fe62e9006..a4567ce26a2 100644
|
||||
index 3994c2106cc..ec943dcd623 100644
|
||||
--- a/dlls/winex11.drv/xim.c
|
||||
+++ b/dlls/winex11.drv/xim.c
|
||||
@@ -32,6 +32,7 @@
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "x11drv.h"
|
||||
#include "imm.h"
|
||||
#include "wine/debug.h"
|
||||
@ -150,14 +139,14 @@ index 44fe62e9006..a4567ce26a2 100644
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(xim);
|
||||
|
||||
@@ -458,6 +459,48 @@ static BOOL X11DRV_DestroyIC(XIC xic, XPointer p, XPointer data)
|
||||
@@ -456,6 +457,48 @@ static BOOL X11DRV_DestroyIC(XIC xic, XPointer p, XPointer data)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+/***********************************************************************
|
||||
+ * X11DRV_UpdateCandidatePos
|
||||
+ */
|
||||
+void X11DRV_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect )
|
||||
+void CDECL X11DRV_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect )
|
||||
+{
|
||||
+ if (ximStyle & XIMPreeditPosition)
|
||||
+ {
|
||||
@ -199,7 +188,7 @@ index 44fe62e9006..a4567ce26a2 100644
|
||||
|
||||
XIC X11DRV_CreateIC(XIM xim, struct x11drv_win_data *data)
|
||||
{
|
||||
@@ -485,7 +528,7 @@ XIC X11DRV_CreateIC(XIM xim, struct x11drv_win_data *data)
|
||||
@@ -483,7 +526,7 @@ XIC X11DRV_CreateIC(XIM xim, struct x11drv_win_data *data)
|
||||
XNDestroyCallback, &destroy,
|
||||
NULL);
|
||||
data->xic = xic;
|
||||
@ -208,7 +197,7 @@ index 44fe62e9006..a4567ce26a2 100644
|
||||
}
|
||||
|
||||
/* create callbacks */
|
||||
@@ -583,5 +626,32 @@ XIC X11DRV_CreateIC(XIM xim, struct x11drv_win_data *data)
|
||||
@@ -581,5 +624,32 @@ XIC X11DRV_CreateIC(XIM xim, struct x11drv_win_data *data)
|
||||
if (status != NULL)
|
||||
XFree(status);
|
||||
|
||||
@ -241,6 +230,28 @@ index 44fe62e9006..a4567ce26a2 100644
|
||||
+
|
||||
return xic;
|
||||
}
|
||||
diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h
|
||||
index 994b082d5b4..e65b1873926 100644
|
||||
--- a/include/wine/gdi_driver.h
|
||||
+++ b/include/wine/gdi_driver.h
|
||||
@@ -167,7 +167,7 @@ struct gdi_dc_funcs
|
||||
};
|
||||
|
||||
/* increment this when you change the DC function table */
|
||||
-#define WINE_GDI_DRIVER_VERSION 70
|
||||
+#define WINE_GDI_DRIVER_VERSION 71
|
||||
|
||||
#define GDI_PRIORITY_NULL_DRV 0 /* null driver */
|
||||
#define GDI_PRIORITY_FONT_DRV 100 /* any font driver */
|
||||
@@ -285,6 +285,8 @@ struct user_driver_funcs
|
||||
const RECT *,struct window_surface*);
|
||||
/* system parameters */
|
||||
BOOL (CDECL *pSystemParametersInfo)(UINT,UINT,void*,UINT);
|
||||
+ /* IME functions */
|
||||
+ void (CDECL *pUpdateCandidatePos)(HWND, const RECT *);
|
||||
/* thread management */
|
||||
void (CDECL *pThreadDetach)(void);
|
||||
};
|
||||
--
|
||||
2.30.2
|
||||
2.33.0
|
||||
|
||||
|
@ -1,2 +1 @@
|
||||
Fixes: [30938] Update a XIM candidate position when cursor location changes
|
||||
Disabled: True
|
||||
|
Loading…
Reference in New Issue
Block a user