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
https://bugs.winehq.org/show_bug.cgi?id=48269
Konrad Materka materka@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Tray icon (XEMBED) moves |Tray icon (XEMBED) moves |when (0,0) coordinate is |when (0,0) coordinate is |outside of the drawing area |outside of the primary | |screen
https://bugs.winehq.org/show_bug.cgi?id=48269
--- Comment #1 from Konrad Materka materka@gmail.com --- This is definitely caused by (0,0) not on the primary screen. With quite simple setup:
First screen (1920×1080) on the left Second screen (1920×1080) on the right, this is primary.
Wine moves tray icon window to the position (1920,0), which is (0,0) on the primary screen.