So, after the previous post I did some digging in the code. getTransientForHint is from Graphics.X11.Xlib.Extras haskell library.
Yes. Do not expect that the X11 binding will be changed to add this; that's the wrong place to put it.
So there are two ways to fix this:
1. Fix in libX11 by adding another function or fixing existing one.
2. Fixing getTransientForHint in G.X.X11.Extras by adding another condition to check for WM_CLIENT_LEADER according to ICCWM specs.
And then there's the correct one: extend the *user* of this function, in ManageHelpers, to also do the WM_CLIENT_LEADER check.
Modifying a low level X11 binding to do something the bound library does not, namely adding WM_CLIENT_LEADER to a function which is documented to only do WM_TRANSIENT_FOR, is the wrong place to put this.
--