https://bugs.winehq.org/show_bug.cgi?id=40828
--- Comment #25 from Zebediah Figura z.figura12@gmail.com --- Right, okay. The important detail, I guess, is that a fullscreen window doesn't have to be topmost itself, so I guess we have two options:
1. Don't make the taskbar topmost, and just never adjust its z-order. The taskbar isn't focusable (or shouldn't be), so it can't be raised. Any fullscreen windows will then cover it. Any non-fullscreen windows also will cover it instead of going behind it. The latter is contradictory to current behaviour and to default Windows behaviour, but not too bad in the long run. This would mean essentially the patch from comment 14, and nothing else (though I'd still remove the redundant HWND_TOPMOST from that call.)
2. Make the taskbar topmost, and hide it when a fullscreen window is drawn. Necessary because a topmost window is always drawn over a non-topmost window, and the fullscreen window may be non-topmost. (Aside: I was under the impression that two topmost windows had normal stacking rules relative to each other, but maybe that's not the case. Anyway it doesn't matter much here.) In this case the patch to make the taskbar topmost on creation and not change its z-order becomes redundant, but should maybe still be applied anyway; it seems more existentially sensible (there's no reason why the taskbar should change its z-order in any of the given cases).
I don't know if I have a particular opinion which is better. (1) is simpler, but (2) is more consistent with Windows. Best to leave it up to those who more commonly use such UI, I guess.