From 012a071335602530308c89731217d3ffbbc5b6f2 Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Mon, 11 Jun 2007 20:26:29 +0200 Subject: API CHANGE: Give doLayout a Stack rather than a flattened list darcs-hash:20070611182629-a5988-384e2f82340497c833a68d909ea485017803fe9b --- Operations.hs | 9 ++++++--- XMonad.hs | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Operations.hs b/Operations.hs index 9a47d55..d1c122f 100644 --- a/Operations.hs +++ b/Operations.hs @@ -140,7 +140,8 @@ windows f = do let n = W.tag (W.workspace w) this = W.view n ws Just l = fmap fst $ M.lookup n fls - (flt, tiled) = partition (flip M.member (W.floating ws)) (W.index this) + flt = filter (flip M.member (W.floating ws)) (W.index this) + tiled = W.filter (not . flip M.member (W.floating ws)) . W.stack . W.workspace . W.current $ this (Rectangle sx sy sw sh) = genericIndex xinesc (W.screen w) (gt,gb,gl,gr) = genericIndex gaps (W.screen w) viewrect = Rectangle (sx + fromIntegral gl) (sy + fromIntegral gt) @@ -370,7 +371,9 @@ instance Message IncMasterN -- simple fullscreen mode, just render all windows fullscreen. -- a plea for tuple sections: map . (,sc) full :: Layout -full = Layout { doLayout = \sc ws -> return [ (w,sc) | w <- ws ] +full = Layout { doLayout = \sc ws -> return $ case ws of + W.Empty -> [] + (W.Node f _ _) -> [(f, sc)] , modifyLayout = const (return Nothing) } -- no changes -- @@ -378,7 +381,7 @@ full = Layout { doLayout = \sc ws -> return [ (w,sc) | w <- ws ] -- tall :: Int -> Rational -> Rational -> Layout tall nmaster delta frac = - Layout { doLayout = \r -> return . ap zip (tile frac r nmaster . length) + Layout { doLayout = \r -> return . ap zip (tile frac r nmaster . length) . W.integrate , modifyLayout = \m -> return $ msum [fmap resize (fromMessage m) ,fmap incmastern (fromMessage m)] } diff --git a/XMonad.hs b/XMonad.hs index 0cc0a63..df1dade 100644 --- a/XMonad.hs +++ b/XMonad.hs @@ -108,7 +108,7 @@ atom_WM_STATE = getAtom "WM_STATE" -- 'doLayout', a pure function to layout a Window set 'modifyLayout', -- 'modifyLayout' can be considered a branch of an exception handler. -- -data Layout = Layout { doLayout :: Rectangle -> [Window] -> X [(Window, Rectangle)] +data Layout = Layout { doLayout :: Rectangle -> Stack Window -> X [(Window, Rectangle)] , modifyLayout :: SomeMessage -> X (Maybe Layout) } -- Based on ideas in /An Extensible Dynamically-Typed Hierarchy of Exceptions/, -- cgit v1.2.3