Hi,
this is my proposal for a Xinerama safe PerWorkspace.
It includes a new LayoutClass method:
runLayout :: Workspace WorkspaceId (layout a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (layout a))
This is just some code moved around:
Fri Feb 22 18:58:15 CET 2008 Andrea Rossato
* runLayout is now a LayoutClass method and takes the Workspace and the screen Rectangle
M ./XMonad/Core.hs -7 +7
M ./XMonad/Operations.hs -5 +5
This is the patch to PerWorkspace:
Fri Feb 22 18:59:54 CET 2008 Andrea Rossato
* PerWorkspace: reimplemented using runLayout
This way we have a Xinerama safe PerWorkspace and the emptyLayout
method for free.
M ./XMonad/Layout/PerWorkspace.hs -73 +27
Some lines were left there just because I'm lazy....;)
Cheers,
Andrea
ps: I must confess that if the runLayout method could be accepted in
the core my request of changing the 'description' type would be gone.
While my sense of symmetry would require it for implementing a
LayoutCombinator class as I have it mind, still I'm coming to thing
that, from the practical point of view, the restrictions imposed by
that signature are irrelevant for our purposes. And, probably, the
fact of restricting the class to what I call pure combinators only,
would be just fine.
This is quite a common pattern of mine when it comes to type classes:
I cannot see where I'll end up when I start implementing them. There
must be some hidden weirdness I cannot grasp entirely.
;)