https://bugs.winehq.org/show_bug.cgi?id=46437
Bug ID: 46437 Summary: explorer: Add an option to keep the taskbar on top of other windows (virtual desktop) Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: NEW Severity: enhancement Priority: P2 Component: programs Assignee: wine-bugs@winehq.org Reporter: o.dierick@piezo-forte.be Distribution: ---
This bug describes an user interface enhancement to the taskbar of the built-in explorer in virtual desktop mode.
Current behavior: The taskbar is created without the 'topmost' style. Any window created/activated is brought to the foreground, on top of the taskbar. The taskbar is automatically hidden when the last icon is removed from the systray. The taskbar is made visible and is brought on top when: - The virtual desktop is created; - The virtual desktop size changes; - An icon is added to the previously empty hidden systray. When these events occur, fullscreen windows are treated like normal windows: The taskbar is drawn over them, and one has to activate the window to bring it above the taskbar.
The issue with the taskbar appearing above fullscreen windows is reported as bug 40828. I already submitted a patch to address this by preventing any z order change to the taskbar. This leaves the taskbar below other windows at all time. Even without that patch, the taskbar doesn't stay on top of normal windows. Many people likes to have the taskbar always on top of normal windows.
Proposed enhancement: Add an option to 'keep the taskbar on top of other windows'.
User Interface: - A right-click pop-up menu will be added to the taskbar; - The pop-up menu will have an entry 'Taskbar settings'; - The menu entry will open a 'Taskbar settings' window; - The Taskbar settings window will contain a 'Keep taskbar on top of other window' checkbox; - The checkbox will be checked by default on prefix creation. - The settings will be saved in the registry; - The user shall click 'ok' to save and apply the changes and close the window; - The user shall click 'cancel' to discard the changes and close the window;
Implementation details: When the option is enabled, the 'topmost' style will be applied to the taskbar. Fullscreen windows are not necessarily topmost and the taskbar will be above non-topmost fullscreen windows. To avoid that, the taskbar will have to detect when a fullscreen window is activated and hide itself (Maybe through SetWinEventHook() with EVENT_SYSTEM_FOREGROUND). It will be made visible again when the fullscreen window is no longer active.
For now, the visibility toggling when icon are added/removed from the systray would be retained. Adding an actual 'Automatically hide the taskbar' option is another possible enhancement.
Comments welcome.