Rebase against e956c4ec71dd0f41090df3863e6f937963b2b7d9.

This commit is contained in:
Elizabeth Figura 2025-04-02 18:32:00 -05:00
parent e1b2c45272
commit 8924ee42d8
12 changed files with 47 additions and 263 deletions

View File

@ -1,4 +1,4 @@
From fd1785fead39ea0aecaaf4b02b8b62f1b0006332 Mon Sep 17 00:00:00 2001
From e941585d942942f7b97b73ae24b9a0a486a855e4 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 14 Jul 2020 15:00:34 +0300
Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
@ -21,7 +21,7 @@ index 8192c067e4c..d4abbdb3f37 100644
linux/types.h \
linux/ucdrom.h \
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index 26b540bd629..45add085205 100644
index fb5259d8714..93020158d0b 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -27,6 +27,7 @@
@ -41,8 +41,8 @@ index 26b540bd629..45add085205 100644
#include <unistd.h>
#ifdef HAVE_MACHINE_SYSARCH_H
# include <machine/sysarch.h>
@@ -65,6 +68,14 @@
# include <mach/mach.h>
@@ -73,6 +76,14 @@
extern void _thread_set_tsd_base(uint64_t);
#endif
+#if defined(HAVE_LINUX_FILTER_H) && defined(HAVE_LINUX_SECCOMP_H) && defined(HAVE_SYS_PRCTL_H)
@ -56,7 +56,7 @@ index 26b540bd629..45add085205 100644
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
@@ -1824,6 +1835,194 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
@@ -1857,6 +1868,194 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
return 0;
}
@ -251,7 +251,7 @@ index 26b540bd629..45add085205 100644
/***********************************************************************
* handle_interrupt
@@ -2572,10 +2771,14 @@ void signal_init_process(void)
@@ -2567,10 +2766,14 @@ void signal_init_process(void)
if (sigaction( SIGSEGV, &sig_act, NULL ) == -1) goto error;
if (sigaction( SIGILL, &sig_act, NULL ) == -1) goto error;
if (sigaction( SIGBUS, &sig_act, NULL ) == -1) goto error;

View File

@ -1,4 +1,4 @@
From 068536823c008835d9d96af2ae2cb030e753dd7f Mon Sep 17 00:00:00 2001
From ecc14aeb2e510520705e98ebb39e9b2fcb62b453 Mon Sep 17 00:00:00 2001
From: David Torok <dt@zeroitlab.com>
Date: Sun, 17 Nov 2019 19:08:12 +0100
Subject: [PATCH] Send WM_NCPOINTERUP on focus regain
@ -8,10 +8,10 @@ Subject: [PATCH] Send WM_NCPOINTERUP on focus regain
1 file changed, 3 insertions(+)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index dda2a750275..05efec915b2 100644
index a4834b740d8..5d14779538c 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -1375,6 +1375,9 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
@@ -2045,6 +2045,9 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
send_message( hwnd, WM_ACTIVATE,
MAKEWPARAM( mouse ? WA_CLICKACTIVE : WA_ACTIVE, is_iconic(hwnd) ),
(LPARAM)previous );
@ -20,7 +20,7 @@ index dda2a750275..05efec915b2 100644
+
if (NtUserGetAncestor( hwnd, GA_PARENT ) == get_desktop_window())
NtUserPostMessage( get_desktop_window(), WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd );
}
--
2.35.1
2.47.2

View File

@ -1,5 +1,5 @@
Fixes: [48121] Improve Alt+tab for unity games.
Depends: winex11-_NET_ACTIVE_WINDOW
# The other patches on this bug are other solutions but
# might cause errors if they dont recieve the HTCAPTION
# message.

View File

@ -1,4 +1,4 @@
From 8c830f61a85e634b1fc135f6fe90a1dd5e45d158 Mon Sep 17 00:00:00 2001
From 2f2480806c4c431aeb75308e570a317da43f3508 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= <gabrielopcode@gmail.com>
Date: Mon, 22 Jul 2019 15:29:25 +0300
Subject: [PATCH] user32/focus: Prevent a recursive loop with the activation
@ -20,10 +20,10 @@ Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
2 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index cbdd4b195d3..241d07cefd2 100644
index a4834b740d8..123a0ff9a94 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -1810,7 +1810,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
@@ -1966,7 +1966,7 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
{
HWND previous = get_active_window();
BOOL ret;
@ -32,7 +32,7 @@ index cbdd4b195d3..241d07cefd2 100644
CBTACTIVATESTRUCT cbt;
if (previous == hwnd)
@@ -1819,16 +1819,24 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
@@ -1975,16 +1975,24 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
goto done;
}
@ -66,7 +66,7 @@ index cbdd4b195d3..241d07cefd2 100644
}
SERVER_START_REQ( set_active_window )
@@ -1848,7 +1856,11 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
@@ -2006,7 +2014,11 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
if (send_message( hwnd, WM_QUERYNEWPALETTE, 0, 0 ))
send_message_timeout( HWND_BROADCAST, WM_PALETTEISCHANGING, (WPARAM)hwnd, 0,
SMTO_ABORTIFHUNG, 2000, FALSE );
@ -79,7 +79,7 @@ index cbdd4b195d3..241d07cefd2 100644
}
old_thread = previous ? get_window_thread( previous, NULL ) : 0;
@@ -1880,7 +1892,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
@@ -2039,7 +2051,7 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
}
}
@ -88,7 +88,7 @@ index cbdd4b195d3..241d07cefd2 100644
{
send_message( hwnd, WM_NCACTIVATE, hwnd == NtUserGetForegroundWindow(), (LPARAM)previous );
send_message( hwnd, WM_ACTIVATE,
@@ -1914,9 +1926,13 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
@@ -2064,13 +2076,17 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
}
}
@ -96,7 +96,11 @@ index cbdd4b195d3..241d07cefd2 100644
+ win_set_flags(hwnd, 0, WIN_IS_IN_ACTIVATION);
+
done:
if (hwnd) clip_fullscreen_window( hwnd, FALSE );
if (hwnd)
{
if (hwnd == NtUserGetForegroundWindow()) user_driver->pActivateWindow( hwnd, previous );
clip_fullscreen_window( hwnd, FALSE );
}
- return TRUE;
+
+ return ret;
@ -104,10 +108,10 @@ index cbdd4b195d3..241d07cefd2 100644
/**********************************************************************
diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h
index b39e38db5d6..4be55209265 100644
index 2f3bbdf91c0..74f5b07bd46 100644
--- a/dlls/win32u/ntuser_private.h
+++ b/dlls/win32u/ntuser_private.h
@@ -100,6 +100,7 @@ typedef struct tagWND
@@ -92,6 +92,7 @@ typedef struct tagWND
#define WIN_NEEDS_SHOW_OWNEDPOPUP 0x0020 /* WM_SHOWWINDOW:SC_SHOW must be sent in the next ShowOwnedPopup call */
#define WIN_CHILDREN_MOVED 0x0040 /* children may have moved, ignore stored positions */
#define WIN_HAS_IME_WIN 0x0080 /* the window has been registered with imm32 */
@ -116,5 +120,5 @@ index b39e38db5d6..4be55209265 100644
#define WND_OTHER_PROCESS ((WND *)1) /* returned by get_win_ptr on unknown window handles */
#define WND_DESKTOP ((WND *)2) /* returned by get_win_ptr on the desktop window */
--
2.40.1
2.47.2

View File

@ -1,4 +1,4 @@
From caa1fa1ebb2ffe9bb8f0f298c4738fd631314ddb Mon Sep 17 00:00:00 2001
From cae15d2a3e900333e829a2df790a19e9fa154bbf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 26 Dec 2016 16:37:40 +0100
Subject: [PATCH] wineboot: Initialize proxy settings registry key.
@ -21,10 +21,10 @@ index 0983420a91f..d346b8984b1 100644
EXTRADLLFLAGS = -mconsole
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index 4f83d9eef32..23ffc1f5845 100644
index 1bce8bab33a..c90c3e1d41c 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -77,6 +77,7 @@
@@ -78,6 +78,7 @@
#include <shlwapi.h>
#include <shellapi.h>
#include <setupapi.h>
@ -32,10 +32,10 @@ index 4f83d9eef32..23ffc1f5845 100644
#include <newdev.h>
#include "resource.h"
@@ -1083,6 +1084,13 @@ static void create_volatile_environment_registry_key(void)
RegCloseKey( hkey );
@@ -1219,6 +1220,13 @@ static void create_known_dlls(void)
}
+static void create_proxy_settings(void)
+{
+ HINTERNET inet;
@ -46,10 +46,10 @@ index 4f83d9eef32..23ffc1f5845 100644
/* Performs the rename operations dictated in %SystemRoot%\Wininit.ini.
* Returns FALSE if there was an error, or otherwise if all is ok.
*/
@@ -1922,6 +1930,7 @@ int __cdecl main( int argc, char *argv[] )
if (init || update) update_wineprefix( update );
@@ -2059,6 +2067,7 @@ int __cdecl main( int argc, char *argv[] )
create_volatile_environment_registry_key();
create_known_dlls();
+ create_proxy_settings();
ProcessRunKeys( HKEY_LOCAL_MACHINE, L"RunOnce", TRUE, TRUE );

View File

@ -1,2 +1,3 @@
Fixes: [34594] Fix handling of WM_WINDOWPOS{CHANGING,CHANGED} for deactivated topmost window
Depends: winex11-_NET_ACTIVE_WINDOW
# The rebase isn't exactly clear here. This needs reinvestigation.
Disabled: true

View File

@ -1,4 +1,4 @@
From 170ea84514f98820468b139967f0321105524770 Mon Sep 17 00:00:00 2001
From c30eb624c99b01d7b6e1c3e21cf40869cd3075a8 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 24 Jan 2015 05:12:49 +0100
Subject: [PATCH] winex11: Fix handling of window attributes for WS_EX_LAYERED
@ -9,10 +9,10 @@ Subject: [PATCH] winex11: Fix handling of window attributes for WS_EX_LAYERED
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 0e06939f67d..5f68addc204 100644
index a733d566d4f..4099d2b9879 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -308,7 +308,7 @@ static unsigned long get_mwm_decorations_for_style( DWORD style, DWORD ex_style
@@ -448,7 +448,7 @@ static unsigned long get_mwm_decorations_for_style( DWORD style, DWORD ex_style
unsigned long ret = 0;
if (ex_style & WS_EX_TOOLWINDOW) return 0;
@ -21,7 +21,7 @@ index 0e06939f67d..5f68addc204 100644
if ((style & WS_CAPTION) == WS_CAPTION)
{
@@ -2669,8 +2669,9 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, UINT swp_flags, cons
@@ -3080,8 +3080,9 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hint, UIN
BOOL needs_map = TRUE;
/* layered windows are mapped only once their attributes are set */
@ -31,7 +31,7 @@ index 0e06939f67d..5f68addc204 100644
+
release_win_data( data );
if (needs_icon) fetch_icon_data( hwnd, 0, 0 );
if (needs_map) map_window( hwnd, new_style );
if (needs_map) map_window( hwnd, new_style, activate );
--
2.45.2
2.47.2

View File

@ -1,191 +0,0 @@
From d8bc3b7bbc96baf051b2e9e121a72db163699567 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 10 Feb 2016 15:09:29 +0800
Subject: [PATCH] winex11.drv: Add support for _NET_ACTIVE_WINDOW. (v2)
And use it as a backend in user32.SetActiveWindow().
For bug #2155.
---
dlls/win32u/driver.c | 6 +++++
dlls/win32u/input.c | 2 ++
dlls/winex11.drv/event.c | 5 ++++
dlls/winex11.drv/init.c | 1 +
dlls/winex11.drv/window.c | 48 +++++++++++++++++++++++++++++++++++++++
dlls/winex11.drv/x11drv.h | 2 ++
include/wine/gdi_driver.h | 1 +
7 files changed, 65 insertions(+)
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
index 5edac6a0c8a..6d2ec187e67 100644
--- a/dlls/win32u/driver.c
+++ b/dlls/win32u/driver.c
@@ -816,6 +816,10 @@ static BOOL nulldrv_ScrollDC( HDC hdc, INT dx, INT dy, HRGN update )
hdc, rect.left - dx, rect.top - dy, SRCCOPY, 0, 0 );
}
+static void nulldrv_SetActiveWindow( HWND hwnd )
+{
+}
+
static void nulldrv_SetCapture( HWND hwnd, UINT flags )
{
}
@@ -1278,6 +1282,7 @@ static const struct user_driver_funcs lazy_load_driver =
nulldrv_ProcessEvents,
nulldrv_ReleaseDC,
nulldrv_ScrollDC,
+ nulldrv_SetActiveWindow,
nulldrv_SetCapture,
loaderdrv_SetDesktopWindow,
nulldrv_SetFocus,
@@ -1375,6 +1380,7 @@ void __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT version
SET_USER_FUNC(ProcessEvents);
SET_USER_FUNC(ReleaseDC);
SET_USER_FUNC(ScrollDC);
+ SET_USER_FUNC(SetActiveWindow);
SET_USER_FUNC(SetCapture);
SET_USER_FUNC(SetDesktopWindow);
SET_USER_FUNC(SetFocus);
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index 008a8b4943d..724b5d9a660 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -2051,6 +2051,8 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
NtUserPostMessage( get_desktop_window(), WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd );
}
+ user_driver->pSetActiveWindow( hwnd );
+
/* now change focus if necessary */
if (focus)
{
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index a9e9f25b422..66191a672e9 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -656,6 +656,9 @@ static void set_focus( Display *display, HWND hwnd, Time time )
Window win;
GUITHREADINFO threadinfo;
+ /* prevent recursion */
+ x11drv_thread_data()->active_window = hwnd;
+
TRACE( "setting foreground window to %p\n", hwnd );
NtUserSetForegroundWindow( hwnd );
@@ -911,6 +914,8 @@ static void focus_out( Display *display , HWND hwnd )
if (!is_current_process_focused())
{
+ x11drv_thread_data()->active_window = 0;
+
/* Abey : 6-Oct-99. Check again if the focus out window is the
Foreground window, because in most cases the messages sent
above must have already changed the foreground window, in which
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c
index 70da9b8c094..027643c8f5f 100644
--- a/dlls/winex11.drv/init.c
+++ b/dlls/winex11.drv/init.c
@@ -444,6 +444,7 @@ static const struct user_driver_funcs x11drv_funcs =
.pProcessEvents = X11DRV_ProcessEvents,
.pReleaseDC = X11DRV_ReleaseDC,
.pScrollDC = X11DRV_ScrollDC,
+ .pSetActiveWindow = X11DRV_SetActiveWindow,
.pSetCapture = X11DRV_SetCapture,
.pSetDesktopWindow = X11DRV_SetDesktopWindow,
.pSetFocus = X11DRV_SetFocus,
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 51b64e8e83c..dbe3314fee2 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -2781,6 +2781,54 @@ BOOL X11DRV_ScrollDC( HDC hdc, INT dx, INT dy, HRGN update )
}
+/***********************************************************************
+ * SetActiveWindow (X11DRV.@)
+ */
+void X11DRV_SetActiveWindow( HWND hwnd )
+{
+ struct x11drv_thread_data *thread_data = x11drv_init_thread_data();
+ struct x11drv_win_data *data;
+
+ TRACE("%p\n", hwnd);
+
+ if (thread_data->active_window == hwnd)
+ {
+ TRACE("ignoring activation for already active window %p\n", hwnd);
+ return;
+ }
+
+ if (!(data = get_win_data( hwnd ))) return;
+
+ if (data->managed)
+ {
+ XEvent xev;
+ struct x11drv_win_data *active = get_win_data( thread_data->active_window );
+ DWORD timestamp = NtUserGetThreadInfo()->message_time - EVENT_x11_time_to_win32_time( 0 );
+
+ TRACE("setting _NET_ACTIVE_WINDOW to %p/%lx, current active %p/%lx\n",
+ data->hwnd, data->whole_window, active ? active->hwnd : NULL, active ? active->whole_window : 0 );
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.window = data->whole_window;
+ xev.xclient.message_type = x11drv_atom(_NET_ACTIVE_WINDOW);
+ xev.xclient.serial = 0;
+ xev.xclient.display = data->display;
+ xev.xclient.send_event = True;
+ xev.xclient.format = 32;
+
+ xev.xclient.data.l[0] = 1; /* source: application */
+ xev.xclient.data.l[1] = timestamp;
+ xev.xclient.data.l[2] = active ? active->whole_window : 0;
+ xev.xclient.data.l[3] = 0;
+ xev.xclient.data.l[4] = 0;
+ XSendEvent( data->display, root_window, False, SubstructureRedirectMask | SubstructureNotifyMask, &xev );
+
+ if (active) release_win_data( active );
+ }
+
+ release_win_data( data );
+}
+
/***********************************************************************
* SetCapture (X11DRV.@)
*/
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 75dd3c1711a..e4013a65b34 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -226,6 +226,7 @@ extern void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect,
const RECT *top_rect, DWORD flags );
extern void X11DRV_ReleaseDC( HWND hwnd, HDC hdc );
extern BOOL X11DRV_ScrollDC( HDC hdc, INT dx, INT dy, HRGN update );
+extern void X11DRV_SetActiveWindow( HWND hwnd );
extern void X11DRV_SetCapture( HWND hwnd, UINT flags );
extern void X11DRV_SetDesktopWindow( HWND hwnd );
extern void X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha,
@@ -391,6 +392,7 @@ struct x11drv_thread_data
Display *display;
XEvent *current_event; /* event currently being processed */
HWND grab_hwnd; /* window that currently grabs the mouse */
+ HWND active_window; /* active window */
HWND last_focus; /* last window that had focus */
HWND keymapnotify_hwnd; /* window that should receive modifier release events */
XIM xim; /* input method */
diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h
index efee8d1af4d..b4b5b378554 100644
--- a/include/wine/gdi_driver.h
+++ b/include/wine/gdi_driver.h
@@ -370,6 +370,7 @@ struct user_driver_funcs
BOOL (*pProcessEvents)(DWORD);
void (*pReleaseDC)(HWND,HDC);
BOOL (*pScrollDC)(HDC,INT,INT,HRGN);
+ void (*pSetActiveWindow)(HWND);
void (*pSetCapture)(HWND,UINT);
void (*pSetDesktopWindow)(HWND);
void (*pSetFocus)(HWND);
--
2.47.2

View File

@ -1,29 +0,0 @@
From 7f524fa9868f4707d6c30af6692283dfc18e647e Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 6 Apr 2016 15:14:25 +0800
Subject: [PATCH] user32: Before asking a WM to activate a window make sure
that the window is in foreground and not minimized.
This patch fixes iconify action using WM's taskbar buttons for Winamp.
---
dlls/win32u/input.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index 8fcf1a2fb7e..ad7afdfcc68 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -1633,6 +1633,10 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
(LPARAM)previous );
if (NtUserGetAncestor( hwnd, GA_PARENT ) == get_desktop_window())
NtUserPostMessage( get_desktop_window(), WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd );
+
+ if (hwnd == NtUserGetForegroundWindow() && !is_iconic( hwnd ))
+ NtUserSetActiveWindow( hwnd );
+
}
user_driver->pSetActiveWindow( hwnd );
--
2.39.0

View File

@ -1 +0,0 @@
Fixes: [2155] Forward activate window requests to WM using _NET_ACTIVE_WINDOW

View File

@ -1,4 +1,4 @@
From 2978e6662dd8919af8a9a048106f0ec574b10544 Mon Sep 17 00:00:00 2001
From cd5537909157f06d1f163c8d2b6583867a1fd2ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= <gabrielopcode@gmail.com>
Date: Mon, 24 Dec 2018 14:26:57 +0200
Subject: [PATCH] winex11.drv/window: Query the X server for the actual rect of
@ -22,7 +22,7 @@ Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 910befa2675..24a640a14be 100644
index a733d566d4f..c67344edf5b 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -389,6 +389,25 @@ static struct x11drv_win_data *alloc_win_data( Display *display, HWND hwnd )
@ -51,7 +51,7 @@ index 910befa2675..24a640a14be 100644
/***********************************************************************
* is_window_managed
@@ -2969,7 +2988,8 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hint, UIN
@@ -3042,7 +3061,8 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hint, UIN
if (old_style & WS_VISIBLE)
{
if (((swp_flags & SWP_HIDEWINDOW) && !(new_style & WS_VISIBLE)) ||
@ -59,7 +59,7 @@ index 910befa2675..24a640a14be 100644
+ (!(new_style & WS_MINIMIZE) && !is_window_rect_mapped( &new_rects->window ) && is_window_rect_mapped( &old_rects.window ) &
+ !is_actual_window_rect_mapped( data )))
{
window_set_wm_state( data, WithdrawnState );
window_set_wm_state( data, WithdrawnState, FALSE );
release_win_data( data );
--
2.47.2

View File

@ -1 +1 @@
8e2aea6290e823d2f5023e2bff5c2fec0880a65d
e956c4ec71dd0f41090df3863e6f937963b2b7d9