[PATCH v2 0/1] MR10011: programs/explorer: Follow up c31e65fd3bde7, keep systray visible with taskbar enabled
This is a follow-up to c31e65fd3bde71234668507a9e15780d567c0a51, which introduced a clear separation between a standalone systray window (show_systray) and the systray area embedded in the taskbar (enable_taskbar). While the standalone systray is correctly disabled when the shell taskbar is enabled, parts of the systray visibility logic still treated show_systray as a global on/off switch. As a result, WM_DISPLAYCHANGE would hide the systray entirely when show_systray was false, even though the taskbar (and its dedicated systray area) was enabled. This caused the systray and its balloons to disappear permanently after a display mode change in desktop=shell configurations. Adjust the visibility conditions so that an enabled taskbar always allows the systray to remain visible, restoring the behavior implied by c31e65fd3bde71234668507a9e15780d567c0a51 and preventing the systray from being hidden on display changes when it is embedded in the taskbar. -- v2: programs/explorer: Follow up c31e65fd3bde7, keep systray visible with taskbar enabled https://gitlab.winehq.org/wine/wine/-/merge_requests/10011
From: Twaik Yont <9674930+twaik@users.noreply.github.com> This is a follow-up to c31e65fd3bde71234668507a9e15780d567c0a51, which introduced a clear separation between a standalone systray window (show_systray) and the systray area embedded in the taskbar (enable_taskbar). While the standalone systray is correctly disabled when the shell taskbar is enabled, parts of the systray visibility logic still treated show_systray as a global on/off switch. As a result, WM_DISPLAYCHANGE would hide the systray entirely when show_systray was false, even though the taskbar (and its dedicated systray area) was enabled. This caused the systray and its balloons to disappear permanently after a display mode change in desktop=shell configurations. Adjust the visibility conditions so that an enabled taskbar always allows the systray to remain visible, restoring the behavior implied by c31e65fd3bde71234668507a9e15780d567c0a51 and preventing the systray from being hidden on display changes when it is embedded in the taskbar. Signed-off-by: Twaik Yont <9674930+twaik@users.noreply.github.com> --- programs/explorer/systray.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/programs/explorer/systray.c b/programs/explorer/systray.c index fcbceb6fda4..a2098c808ae 100644 --- a/programs/explorer/systray.c +++ b/programs/explorer/systray.c @@ -271,7 +271,7 @@ static void balloon_create_timer( struct icon *icon ) static BOOL show_balloon( struct icon *icon ) { - if (!show_systray) return FALSE; /* systray has been hidden */ + if (!enable_taskbar && !show_systray) return FALSE; /* systray has been hidden */ if (icon->display == ICON_DISPLAY_HIDDEN) return FALSE; /* not displayed */ if (!icon->info_text[0]) return FALSE; /* no balloon */ balloon_icon = icon; @@ -1105,8 +1105,7 @@ static LRESULT WINAPI shell_traywnd_proc( HWND hwnd, UINT msg, WPARAM wparam, LP return handle_incoming((HWND)wparam, (COPYDATASTRUCT *)lparam); case WM_DISPLAYCHANGE: - if (!show_systray) do_hide_systray(); - else if (!nb_displayed && !enable_taskbar) do_hide_systray(); + if (!enable_taskbar && (!show_systray || !nb_displayed)) do_hide_systray(); else do_show_systray(); break; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10011
On Tue Feb 3 18:30:30 2026 +0000, Twaik Yont wrote:
changed this line in [version 2 of the diff](/wine/wine/-/merge_requests/10011/diffs?diff_id=241801&start_sha=fde8285e452745f8c22e4b8b9a5b0fa3cfd3c6bb#440d99c5689f0a3ecb23ff968832377f5a87347d_603_603) Done.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10011#note_128684
This merge request was approved by Rémi Bernon. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10011
participants (3)
-
Rémi Bernon (@rbernon) -
Twaik Yont -
Twaik Yont (@twaik)