Zhiyi Zhang (@zhiyi) commented about dlls/winex11.drv/window.c:
if (!X11DRV_DisplayDevices_SupportEventHandlers()) return;
- if (!xinerama_get_fullscreen_monitors( &data->rects.visible, monitors ))
return;
- /* If _NET_WM_FULLSCREEN_MONITORS is not set and the fullscreen monitors are spanning only one
* monitor then do not set _NET_WM_FULLSCREEN_MONITORS.
If _NET_WM_FULLSCREEN_MONITORS is not set and the fullscreen monitors are spanning only one monitor then do not set _NET_WM_FULLSCREEN_MONITORS.
And from 70c9239c
What's more, setting _NET_WM_FULLSCREEN_MONITORS adds a constraint on Mutter so that such a window can't be moved to another monitor by using the Shift+Super+Up/Down/Left/Right shortcut. So the property should be added only when necessary.
So this brings back the regression? Because now _NET_WM_FULLSCREEN_MONITORS is set even when the window only covers one monitor. I don't immediately know what the correct resolution is. Perhaps setting _NET_WM_FULLSCREEN_MONITORS and then deleting/resetting it? Would that work?
Also according to wm-spec version 1.5, there is no way to delete this. This -1 special value thing might be only available to Mutter and KWin. So we should probably avoid setting _NET_WM_FULLSCREEN_MONITORS unless necessary.