https://bugs.winehq.org/show_bug.cgi?id=48269
Bug ID: 48269 Summary: Tray icon (XEMBED) moves when (0,0) coordinate is outside of the drawing area Product: Wine Version: 4.21 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: user32 Assignee: wine-bugs@winehq.org Reporter: materka@gmail.com Distribution: ---
Created attachment 65934 --> https://bugs.winehq.org/attachment.cgi?id=65934 Monitor layouts
For some uncommon monitor layouts wine tray icon is not working correctly.
When XEMBED is used X11 window should never move, because it is managed by the system tray. KDE positions all tray icons in (0,0) position and renders them off-screen (XComposite + XDamage). When screens are configured in a way, that (0,0) is not is the first screen (?) area (attachment), wine icon tray window tries to move itself. This repeats, window is moved further and further with each event (not sure how it is triggered).
For example, primary screen has size 1440x900, second screen 900x1600 (vertical position) and is positioned right of the primary screen, bottoms aligned. Check attached picture for reference (second "NOT OK" example). It this scenario (0,0) is 700 px above the primary screen (1600 - 900 = 700). Wine will move tray icon to the position (0, 700). This should not happen, because tray icon window is embedded, so it is managed by parent window.
I *suspect* the move is performed "UpdateLayeredWindowIndirect" in dlls/user32/win.c. It calls set_window_pos which then moves the window using X11 functions. I'm not that familiar with X11 to trace it correctly.
I tested mainly with wine-4.21 (Staging), but it also reproducible with old wine 3.6.
Originally reported on KDE bug tracker: https://bugs.kde.org/show_bug.cgi?id=414667