[PATCH] explorer: Don't change z order of the taskbar when displaying

o.dierick at piezo-forte.be o.dierick at piezo-forte.be
Sun Jan 6 18:51:18 CST 2019


From: "Olivier F. R. Dierick" <o.dierick at piezo-forte.be>

Keep the z order of the taskbar when it changes visibility so that it
doesn't get drawn over overlapping windows, including fullscreen ones.
It prevents the taskbar from reappearing on top of everything when
the virtual desktop changes size or when an icon is added to a
previously hidden systray. This is consistent with XP and Vista
default behavior. Will probably be enhanced in the future with an
option to 'keep the taskbar on top of other windows', for newer
Windows compatibility.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40828
Signed-off-by: Olivier F. R. Dierick <o.dierick at piezo-forte.be>
---
There is another patch from Hamish Claxton in the queue that addresses
the issue with a different approach. I think it's better suited as the
enhancement described above, but it needs to be reworked beforehand.
---
 programs/explorer/systray.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/programs/explorer/systray.c b/programs/explorer/systray.c
index 3d36f74..f9e6661 100644
--- a/programs/explorer/systray.c
+++ b/programs/explorer/systray.c
@@ -766,8 +766,8 @@ static void do_show_systray(void)
     tray_width = GetSystemMetrics( SM_CXSCREEN );
     tray_height = max( icon_cy, size.cy );
     start_button_width = size.cx;
-    SetWindowPos( tray_window, HWND_TOPMOST, 0, GetSystemMetrics( SM_CYSCREEN ) - tray_height,
-                  tray_width, tray_height, SWP_NOACTIVATE | SWP_SHOWWINDOW );
+    SetWindowPos( tray_window, 0, 0, GetSystemMetrics( SM_CYSCREEN ) - tray_height,
+                  tray_width, tray_height, SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW );
     sync_taskbar_buttons();
 }
 
-- 
2.1.4




More information about the wine-devel mailing list