aboutsummaryrefslogtreecommitdiffstats
path: root/SimpleStacking.hs
diff options
context:
space:
mode:
authorDavid Roundy <droundy@darcs.net>2007-06-23 23:09:52 +0200
committerDavid Roundy <droundy@darcs.net>2007-06-23 23:09:52 +0200
commit5f1312128d87961231d5431af0885711a01cd120 (patch)
tree5b785ff7779d1d842bc17ac554ccbe759ea4c35d /SimpleStacking.hs
parentb40d0f8237f4140decbf4edc7366b900cf82428b (diff)
downloadXMonadContrib-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.hs24
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'))