Add StackSet.allWindows

This commit is contained in:
Spencer Janssen
2007-10-01 16:39:59 +00:00
parent d05b01431d
commit acbe7976d7
2 changed files with 9 additions and 2 deletions

View File

@@ -21,7 +21,7 @@ module StackSet (
-- * Xinerama operations -- * Xinerama operations
-- $xinerama -- $xinerama
lookupWorkspace, lookupWorkspace,
screens, workspaces, screens, workspaces, allWindows,
-- * Operations on the current stack -- * Operations on the current stack
-- $stackOperations -- $stackOperations
peek, index, integrate, integrate', differentiate, peek, index, integrate, integrate', differentiate,
@@ -43,7 +43,7 @@ module StackSet (
import Prelude hiding (filter) import Prelude hiding (filter)
import Data.Maybe (listToMaybe,fromJust) import Data.Maybe (listToMaybe,fromJust)
import qualified Data.List as L (deleteBy,find,splitAt,filter) import qualified Data.List as L (deleteBy,find,splitAt,filter,nub)
import Data.List ( (\\) ) import Data.List ( (\\) )
import qualified Data.Map as M (Map,insert,delete,empty) import qualified Data.Map as M (Map,insert,delete,empty)
@@ -400,6 +400,10 @@ screens s = current s : visible s
workspaces :: StackSet i l a s sd -> [Workspace i l a] workspaces :: StackSet i l a s sd -> [Workspace i l a]
workspaces s = workspace (current s) : map workspace (visible s) ++ hidden s workspaces s = workspace (current s) : map workspace (visible s) ++ hidden s
-- | Get a list of all windows in the StackSet in no particular order
allWindows :: Eq a => StackSet i l a s sd -> [a]
allWindows = L.nub . concatMap (integrate' . stack) . workspaces
-- | Is the given tag present in the StackSet? -- | Is the given tag present in the StackSet?
tagMember :: Eq i => i -> StackSet i l a s sd -> Bool tagMember :: Eq i => i -> StackSet i l a s sd -> Bool
tagMember t = elem t . map tag . workspaces tagMember t = elem t . map tag . workspaces

View File

@@ -363,6 +363,8 @@ prop_findIndex (x :: T) =
, i <- focus t : up t ++ down t , i <- focus t : up t ++ down t
] ]
prop_allWindowsMember w (x :: T) = (w `elem` allWindows x) ==> member w x
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- 'insert' -- 'insert'
@@ -687,6 +689,7 @@ main = do
,("focusWindow works" , mytest prop_focusWindow_works) ,("focusWindow works" , mytest prop_focusWindow_works)
,("findIndex" , mytest prop_findIndex) ,("findIndex" , mytest prop_findIndex)
,("allWindows/member" , mytest prop_allWindowsMember)
,("insert: invariant" , mytest prop_insertUp_I) ,("insert: invariant" , mytest prop_insertUp_I)
,("insert/new" , mytest prop_insert_empty) ,("insert/new" , mytest prop_insert_empty)