You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Added patch to fix handling of WM_WINDOWPOS{CHANGING,CHANGED} for deactivated topmost window.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
From 59692b046e936dc25ecab6adaf258533a7404635 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Tue, 27 Dec 2016 17:45:05 +0800
|
||||
Subject: winex11.drv: Send WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED messages
|
||||
to a being deactivated topmost window.
|
||||
|
||||
---
|
||||
dlls/winex11.drv/event.c | 13 ++++++++++++-
|
||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
|
||||
index bf2cbb07429..e38b76a7274 100644
|
||||
--- a/dlls/winex11.drv/event.c
|
||||
+++ b/dlls/winex11.drv/event.c
|
||||
@@ -593,16 +593,27 @@ static void set_input_focus( struct x11drv_win_data *data )
|
||||
*/
|
||||
static void set_focus( Display *display, HWND hwnd, Time time )
|
||||
{
|
||||
- HWND focus;
|
||||
+ HWND focus, old_active;
|
||||
Window win;
|
||||
GUITHREADINFO threadinfo;
|
||||
|
||||
+ old_active = GetForegroundWindow();
|
||||
+
|
||||
/* prevent recursion */
|
||||
x11drv_thread_data()->active_window = hwnd;
|
||||
|
||||
TRACE( "setting foreground window to %p\n", hwnd );
|
||||
SetForegroundWindow( hwnd );
|
||||
|
||||
+ /* Some applications expect that a being deactivated topmost window
|
||||
+ * receives the WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED messages,
|
||||
+ * and perform some specific actions. Chessmaster is one of such apps.
|
||||
+ * Window Manager keeps a topmost window on top in z-oder, so there is
|
||||
+ * no need to actually do anything, just send the messages.
|
||||
+ */
|
||||
+ if (old_active && (GetWindowLongW( old_active, GWL_EXSTYLE ) & WS_EX_TOPMOST))
|
||||
+ SetWindowPos( old_active, hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER );
|
||||
+
|
||||
threadinfo.cbSize = sizeof(threadinfo);
|
||||
GetGUIThreadInfo(0, &threadinfo);
|
||||
focus = threadinfo.hwndFocus;
|
||||
--
|
||||
2.11.0
|
||||
|
2
patches/winex11-WM_WINDOWPOSCHANGING/definition
Normal file
2
patches/winex11-WM_WINDOWPOSCHANGING/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: [34594] Fix handling of WM_WINDOWPOS{CHANGING,CHANGED} for deactivated topmost window
|
||||
Depends: winex11-_NET_ACTIVE_WINDOW
|
Reference in New Issue
Block a user