https://bugs.winehq.org/show_bug.cgi?id=37709
Matteo Italia matteo@mitalia.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|user32 |winex11.drv Distribution|--- |Ubuntu
--- Comment #3 from Matteo Italia matteo@mitalia.net --- The problem ultimately comes from wine-X11 implementation of GetMonitorInfo, which stores a hardcoded value (\.\DISPLAY1) in MONITORINFOEX::szDevice for any HMONITOR it is queried about.
Qt uses this string as the key in a map to track the screens, and in case of a duplicated key only the last-seen monitor survives (which in turns explains the symptoms - the menus and combos are moved to stay completely in a screen, but only one screen appears available to Qt).
Wine's broken behavior is still present in master/HEAD, both in winex11.drv and winemac.drv. It's interesting that in winex11.drv/xinerama.c there's already a
/* FIXME: using the same device name for all monitors for now */
and that there's a patch (http://markmail.org/thread/fulg4oa62wrjwtsl) floating around to fix winemac.drv.
Could the fix be as simple as doing something similar to what that patch does (=sprintf to generate correctly numbered names for the various modules)? Or is it necessary to do other modifications (e.g. to CreateDC and other functions that have to parse these names) to correctly support a multi-monitor setup?