Incorrect handling of _NET_WM_STRUT prevents windows launching on or being moved to other monitors when set.
On both Xorg and Wayland, in mutter 3.30.2, if I have two monitors arranged vertically, I cannot drag a window from the top monitor to the bottom one when I am using the panel app tint2. If I'm using tint2 on the side of the screen, say on the right, then I cannot drag windows to the right monitor. Windows launched whilst the mouse is on the second monitor appear instead on the first monitor, at their minimum size, squashed into the corner.
tint2 reserves space at the edge of the screen using _NET_WM_STRUT_PARTIAL and _NET_WM_STRUT to tell the window manager not to allow maximised windows to overlap the panel. If I configure tint2 not to do this, then the problem does not occur. So it seems to be a mishandling of _NET_WM_STRUT/_NET_WM_STRUT_PARTIAL by mutter when there are multiple monitors.
I first noticed this issue when Ubuntu made the move to gnome-shell, prior to that I did not have the issue, so I am fairly sure the problem does not occur on other window managers such as compiz.
To reproduce:
- Configure two monitors vertically - one above the other.
- Install tint2 and run it from the command line. Its default settings are a panel at the bottom of the screen.
- Try to drag a a window to the lower monitor.