[PATCH] winex11.drv: Add a taskbar button for a minimized owned window.
Dmitry Timoshkov
dmitry at baikal.ru
Tue Nov 24 06:25:11 CST 2020
Otherwise minimizing an owned window without WS_EX_APPWINDOW style (common
for Delphi applications) leads to a window completely disappearing after being
minimized.
Before this patch: no taskbar window for a normal or minimized owned window.
After this patch: no taskbar window for normal owned window, after a window
being minimized a taskbar button appears, after a window being restored a taskbar
button gets removed.
Essentially this patch fixes a regression caused by
commit 61e50e15ba45ad54655f98619f5ef33917033165
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri May 28 12:14:43 2010 +0200
winex11: Map zero-size windows and set an empty window region for them.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
dlls/winex11.drv/window.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 457173964e..f0a3f07f37 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -987,7 +987,7 @@ void update_net_wm_states( struct x11drv_win_data *data )
new_state |= (1 << NET_WM_STATE_ABOVE);
if (ex_style & (WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE))
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR) | (1 << NET_WM_STATE_SKIP_PAGER);
- if (!(ex_style & WS_EX_APPWINDOW) && GetWindow( data->hwnd, GW_OWNER ))
+ if (!(ex_style & WS_EX_APPWINDOW) && !(style & WS_MINIMIZE) && GetWindow( data->hwnd, GW_OWNER ))
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR);
if (!data->mapped) /* set the _NET_WM_STATE atom directly */
@@ -2499,7 +2499,8 @@ void CDECL X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, UINT swp_flags
else
{
if (swp_flags & (SWP_FRAMECHANGED|SWP_STATECHANGED)) set_wm_hints( data );
- if (!event_type) update_net_wm_states( data );
+ if (!event_type || event_type == PropertyNotify)
+ update_net_wm_states( data );
}
}
--
2.29.2
More information about the wine-devel
mailing list