
New patches:

[Added LayoutMessages
Andrea Rossato <andrea.rossato@unibz.it>**20070924140906
 This patch adds some more messages to manage layout: LayoutSwitch and
 NonVisible. UnDoLayout is keep for Stack updates. NonVisible is sent
 to layouts in workspaces that are not visible anymore after a refresh.
] 
<
> {
hunk ./Operations.hs 105
 -- ---------------------------------------------------------------------
 -- Managing windows
 
-data UnDoLayout = UnDoLayout deriving ( Typeable, Eq )
-instance Message UnDoLayout
+data LayoutMessages = UnDoLayout | LayoutSwitch | NonVisible deriving ( Typeable, Eq )
+instance Message LayoutMessages
 
 
 -- | windows. Modify the current window list with a pure function, and refresh
hunk ./Operations.hs 122
     modify (\s -> s { windowset = ws })
     d <- asks display
 
+    -- notify non visibility
+    let oldvistags = map (W.tag . W.workspace) $ W.current old : W.visible old
+        gottenHidden  = filter (\w -> elem w oldvistags) $ map W.tag $ W.hidden ws
+    sendMessage' NonVisible gottenHidden
+
     -- for each workspace, layout the currently visible workspaces
     let allscreens     = W.current ws : W.visible ws
         summed_visible = scanl (++) [] $ map (W.integrate' . W.stack . W.workspace) allscreens
hunk ./Operations.hs 310
                                                 { W.workspace = (W.workspace $ W.current ws)
                                                   { W.layout = l' }}}
 
+-- | Send a message to a list of workspaces' layouts, without necessarily refreshing.
+sendMessage' :: Message a => a -> [WorkspaceId] -> X ()
+sendMessage' a l = runOnWorkspaces modw
+    where modw w = if W.tag w `elem` l
+                      then do ml' <- modifyLayout (W.layout w) (SomeMessage a) `catchX` return Nothing
+                              return $ w { W.layout = maybe (W.layout w) id ml' }
+                      else return w
+
 -- | Send a message to all visible layouts, without necessarily refreshing.
 -- This is how we implement the hooks, such as UnDoLayout.
 broadcastMessage :: Message a => a -> X ()
hunk ./Operations.hs 366
               rls' = reverse . rls . reverse
               j s zs = case partition (\z -> s == fst z) zs of
                          (xs,ys) -> xs++ys
-              switchl f = do ml' <- modifyLayout l (SomeMessage UnDoLayout)
+              switchl f = do ml' <- modifyLayout l (SomeMessage LayoutSwitch)
                              return $ Just (LayoutSelection $ f $ (n,fromMaybe l ml'):ls)
     -- otherwise, or if we don't understand the message, pass it along to the real
     -- layout:
}

Context:

[add layout selection back into core xmonad using LayoutSelection.
David Roundy <droundy@darcs.net>**20070921212159
 This is just a reimplementation of LayoutChoice.
] 
[make layouts preserved over restart
David Roundy <droundy@darcs.net>**20070921204316] 
[move Layout into StackSet.
David Roundy <droundy@darcs.net>**20070920221248
 WARNING! This changes the format of StackSet, and
 will definitely mess up your xmonad state, requiring
 at minimum a restart!
] 
[add (unused) Layout to StackSet.
David Roundy <droundy@darcs.net>**20070920212843] 
[remove unneeded Ord constraint.
David Roundy <droundy@darcs.net>**20070920210527] 
[eliminate a few Eq a constraints in StackSet.
David Roundy <droundy@darcs.net>**20070920210143] 
[Pointfree Mirror and SomeLayout instances
Spencer Janssen <sjanssen@cse.unl.edu>**20070920211042] 
[Use derived Show and Read instances for Mirror
Spencer Janssen <sjanssen@cse.unl.edu>**20070920205711] 
[define readLayout to create a SomeLayout based on a set of possible layout types.
David Roundy <droundy@darcs.net>**20070920181506] 
[add Read instance to Layout.
David Roundy <droundy@darcs.net>**20070920174529] 
[add Show instance to Layout
David Roundy <droundy@darcs.net>**20070920161208] 
[eliminate ugly OldLayout.
David Roundy <droundy@darcs.net>**20070920155237] 
[move Layout stuff into class (hokey first cut).
David Roundy <droundy@darcs.net>**20070914215959] 
[fmt, and tiny comment seeking clarification
Don Stewart <dons@galois.com>**20070917234658] 
[Eliminate Operations.sink too
Spencer Janssen <sjanssen@cse.unl.edu>**20070917214052] 
[Remove Operations functions which have StackSet equivalents, just use 'windows foo' instead
Spencer Janssen <sjanssen@cse.unl.edu>**20070917211953] 
[Change manpage token @@ to %! to avoid conflicts with Haddock (xmonad)
Alex Tarkovsky <alextarkovsky@gmail.com>**20070916235229] 
[Haddockify delete' comments
Spencer Janssen <sjanssen@cse.unl.edu>**20070917194114] 
[Fix float behaviour, add shiftWin.
Karsten Schoelzel <kuser@gmx.de>**20070910090329
 
 First, if float is called with window which is on a hidden workspace,
 then the window will remain on that hidden workspace.
 
 Now the focus should change more as expected:
 float w = (view current) . (shiftWin ws w)
     where
         current is the current screen/workspace
         shiftWin ws w is: - view the workspace w is on
             - set focus on w
             - shift ws
             - set focus back to window it was on that workspace
                 unless w was focused
 
 shiftWin was add to StackSet.hs 
] 
[Add delete' for use in shift
Karsten Schoelzel <kuser@gmx.de>**20070910113835
 
 Rename delete to delete' so we can clear floating status in delete,
 thus removing one special handling. 
 At the moment delete' is only used in shift, but is useful for temporarily
 removing a window from the stack.
] 
[update description field of cabal file
Don Stewart <dons@galois.com>**20070916023016] 
[pointfree looks nicer here
Don Stewart <dons@cse.unsw.edu.au>**20070911051928] 
[Remove redundant reveal
Spencer Janssen <sjanssen@cse.unl.edu>**20070910213807] 
[Add missing insert markers for generate-configs.sh in Config.hs
Alex Tarkovsky <alextarkovsky@gmail.com>**20070907120414] 
[Move lower boundary check into applySizeHints, because all users of applySizeHints
Karsten Schoelzel <kuser@gmx.de>**20070905192125
 do this manually.
] 
[export getAtom from XMonad.
Ivan Tarasov <Ivan.Tarasov@gmail.com>**20070825174156] 
[Use show rather than string hacks
Spencer Janssen <sjanssen@cse.unl.edu>**20070905202816] 
[switch WorkspaceId to String.
David Roundy <droundy@darcs.net>**20070820113658] 
[Alex Tarkovsky's docstring patch updated for conflicts
Spencer Janssen <sjanssen@cse.unl.edu>**20070905193558] 
[tasks done
Don Stewart <dons@cse.unsw.edu.au>**20070905004901] 
[TAG 0.3
Spencer Janssen <sjanssen@cse.unl.edu>**20070904195245] 
Patch bundle hash:
edcc2abc19622d4e73a2fb9033ec78604d5b030f
