Zhiyi Zhang (@zhiyi) commented about dlls/winemac.drv/display.c:
- devmode->dmPosition.x = 0;
- devmode->dmPosition.y = 0;
- display_id = displays[display_idx].displayID;
- display_mode = CGDisplayCopyDisplayMode(display_id);
- devmode->dmPosition.x = min_x = CGRectGetMinX(displays[display_idx].frame);
- devmode->dmPosition.y = min_y = CGRectGetMinY(displays[display_idx].frame);
- for (i = 0; i < num_displays; ++i)
- {
if (min_x > CGRectGetMinX(displays[i].frame))
min_x = CGRectGetMinX(displays[i].frame);
if (min_y > CGRectGetMinY(displays[i].frame))
min_y = CGRectGetMinY(displays[i].frame);
- }
- devmode->dmPosition.x -= min_x;
- devmode->dmPosition.y -= min_y;
According to https://developer.apple.com/documentation/appkit/nsscreen/1388393-screens. The primary screen already has an origin of (0, 0). This is different compared to X11 where the primary screen may not be at (0, 0). Offsetting when unnecessary, you're making the leftmost monitor the primary. Could you recheck whether this part of the code is correct?