X.H.ManageDocks: ignore struts that cover an entire screen on that screen
X.H.ManageDocks: ignore struts that cover an entire screen on that screen


Imagine a screen layout like this:

  11111111
  11111111
  11111111
   222222    <--- xmobar here
   222222
   222222

When placing xmobar as indicated, the partial strut property indicates that an
entire height of screen 1 is covered by the strut, as well as a few lines at
the top of screen 2. The original code would create a screen rectangle of
negative height and wreak havoc. This patch causes such strut to be ignored on
the screen it covers entirely, resulting in the desired behaviour of a small
strut at the top of screen 2.

Please note that this semantics of _NET_WM_STRUT and _NET_WM_STRUT_PARTIAL is
different to what is in wm-spec. The "correct" thing to do would be to discard
the covered portion of screen 1 leaving two narrow areas at the sides, but
this new behaviour is probably more desirable in many cases, at least for
xmonad/xmobar users.

The correct solution of having separate _NET_WM_STRUT_PARTIAL for each
Xinerama screen was mentioned in wm-spec maillist in 2007, but has never
really been proposed, discussed and included in wm-spec. Hence this "hack".

xmonad/xmonad-contrib,xmonad/xmonad-contrib,CaptainPatate/xmonad-contrib,0/xmonad-contrib,CaptainPatate/xmonad-contrib,f1u77y/xmonad-contrib,ohlus/xmonad-contrib,0/xmonad-contrib,pjones/xmonad-test,ohlus/xmonad-contrib,f1u77y/xmonad-contrib,ohlus/xmonad-contrib,mathstuf/xmonad-contrib,mathstuf/xmonad-contrib,mathstuf/xmonad-contrib,CaptainPatate/xmonad-contrib,0/xmonad-contrib