diff options
author | David Roundy <droundy@darcs.net> | 2007-06-23 23:09:52 +0200 |
---|---|---|
committer | David Roundy <droundy@darcs.net> | 2007-06-23 23:09:52 +0200 |
commit | 5f1312128d87961231d5431af0885711a01cd120 (patch) | |
tree | 5b785ff7779d1d842bc17ac554ccbe759ea4c35d /SimpleStacking.hs | |
parent | b40d0f8237f4140decbf4edc7366b900cf82428b (diff) | |
download | XMonadContrib-5f1312128d87961231d5431af0885711a01cd120.tar.gz XMonadContrib-5f1312128d87961231d5431af0885711a01cd120.tar.xz XMonadContrib-5f1312128d87961231d5431af0885711a01cd120.zip |
make everything work with new doLayout.
This modifies all the contrib modules to work (so far as I know) with the
new contrib layout. The exception is the LayoutHooks module, which isn't
used. It exports an API that is inherently unsafe, so far as I can tell
(and always has been).
darcs-hash:20070623210952-72aca-1993ca13dc6996b59fedacc271c03fbaf87eabaa.gz
Diffstat (limited to 'SimpleStacking.hs')
-rw-r--r-- | SimpleStacking.hs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/SimpleStacking.hs b/SimpleStacking.hs index 3229a8b..c66fa9a 100644 --- a/SimpleStacking.hs +++ b/SimpleStacking.hs @@ -21,15 +21,16 @@ module XMonadContrib.SimpleStacking ( simpleStacking ) where -import Control.Monad.State ( modify ) +import Control.Monad.State ( get ) import qualified Data.Map as M import Data.Maybe ( catMaybes ) -import Data.List ( nub, lookup ) -import StackSet ( focus, tag, workspace, current, integrate ) +import Data.List ( nub, lookup, delete ) +import StackSet ( focus, tag, workspace, current, up, down ) import Graphics.X11.Xlib ( Window ) import XMonad +import XMonadContrib.LayoutHelpers -- $usage -- You can use this module for @@ -39,14 +40,9 @@ simpleStacking :: Layout Window -> Layout Window simpleStacking = simpleStacking' [] simpleStacking' :: [Window] -> Layout Window -> Layout Window -simpleStacking' st l = l { doLayout = dl - , modifyLayout = \m -> fmap (simpleStacking' st) `fmap` modifyLayout l m } - where dl r s = do modify $ \ state -> - state { layouts = M.adjust - (\(_,ss)->(simpleStacking' - (focus s:filter (`elem` integrate s) st) l,ss)) - (tag.workspace.current.windowset $ state) - (layouts state) } - lo <- doLayout l r s - let m = map (\ (w,rr) -> (w,(w,rr))) lo - return $ catMaybes $ map ((flip lookup) m) $ nub (focus s : st ++ map fst lo) +simpleStacking' st = layoutModify dl idModMod + where dl r s wrs = let m = map (\ (w,rr) -> (w,(w,rr))) wrs + wrs' = catMaybes $ map ((flip lookup) m) $ + nub (focus s : st ++ map fst wrs) + st' = focus s:filter (`elem` (up s++down s)) st + in return (wrs', Just (simpleStacking' st')) |