summaryrefslogtreecommitdiffstats
path: root/StackSet.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-10-05 01:45:37 +0200
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-10-05 01:45:37 +0200
commitfb60d205050cf17ce4778e1279ea8fdb8ae57ef3 (patch)
treeaef53bdaed7fa2a6de36da18ae88bbcff2f27486 /StackSet.hs
parent93356fea2d1030bda8e313a1a12ee943566bfdd5 (diff)
downloadmetatile-fb60d205050cf17ce4778e1279ea8fdb8ae57ef3.tar
metatile-fb60d205050cf17ce4778e1279ea8fdb8ae57ef3.zip
Add mapLayout
darcs-hash:20071004234537-a5988-504015d5c938a232d1355c0f3c602cf366c20aea
Diffstat (limited to 'StackSet.hs')
-rw-r--r--StackSet.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/StackSet.hs b/StackSet.hs
index f77edd1..8b8d123 100644
--- a/StackSet.hs
+++ b/StackSet.hs
@@ -25,8 +25,8 @@ module StackSet (
-- * Operations on the current stack
-- $stackOperations
peek, index, integrate, integrate', differentiate,
- focusUp, focusDown, focusMaster,
- focusWindow, tagMember, renameTag, ensureTags, member, findIndex,
+ focusUp, focusDown, focusMaster, focusWindow,
+ tagMember, renameTag, ensureTags, member, findIndex, mapLayout,
-- * Modifying the stackset
-- $modifyStackset
insertUp, delete, delete', filter,
@@ -424,6 +424,12 @@ ensureTags l allt st = et allt (map tag (workspaces st) \\ allt) st
et (i:is) [] s = et is [] (s { hidden = Workspace i l Nothing : hidden s })
et (i:is) (r:rs) s = et is rs $ renameTag r i s
+mapLayout :: (l -> l') -> StackSet i l a s sd -> StackSet i l' a s sd
+mapLayout f (StackSet v vs hs m) = StackSet (fScreen v) (map fScreen vs) (map fWorkspace hs) m
+ where
+ fScreen (Screen ws s sd) = Screen (fWorkspace ws) s sd
+ fWorkspace (Workspace t l s) = Workspace t (f l) s
+
-- | /O(n)/. Is a window in the StackSet.
member :: Eq a => a -> StackSet i l a s sd -> Bool
member a s = maybe False (const True) (findIndex a s)