From 3709ae67e76e77dbd758089e5289f8120f9d8539 Mon Sep 17 00:00:00 2001 From: Andrea Rossato Date: Tue, 29 Jan 2008 23:49:52 +0100 Subject: LayoutCombinator class: code clean up - ComboType becomes CombboChooser - removed the stupid doFirst - better comboDescription default implemenation darcs-hash:20080129224952-32816-66fc976c8c1c4ce9faa480fc4876f063f7aebd4b.gz --- XMonad/Layout/LayoutCombinators.hs | 22 ++++++++++------------ XMonad/Layout/PerWorkspace.hs | 5 ++--- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/XMonad/Layout/LayoutCombinators.hs b/XMonad/Layout/LayoutCombinators.hs index ad3cba8..d21af6d 100644 --- a/XMonad/Layout/LayoutCombinators.hs +++ b/XMonad/Layout/LayoutCombinators.hs @@ -43,7 +43,7 @@ module XMonad.Layout.LayoutCombinators , JumpToLayout(JumpToLayout) , LayoutCombinator (..) , CombinedLayout (..) - , ComboType (..) + , ComboChooser (..) ) where import Data.Maybe ( fromMaybe, isJust, isNothing ) @@ -222,15 +222,13 @@ when' :: Monad m => (a -> Bool) -> m a -> m a -> m a when' f a b = do a1 <- a; if f a1 then b else return a1 -data ComboType = DoFirst | DoSecond | DoBoth deriving ( Eq, Show ) +data ComboChooser = DoFirst | DoSecond | DoBoth deriving ( Eq, Show ) class (Read (lc a), Show (lc a)) => LayoutCombinator lc a where - chooser :: lc a -> X ComboType + chooser :: lc a -> X ComboChooser chooser lc = return $ pureChooser lc - pureChooser :: lc a -> ComboType + pureChooser :: lc a -> ComboChooser pureChooser _ = DoFirst --- doFirst lc = if (chooser lc) == DoSecond then False else True - doFirst :: lc a -> Bool combineResult :: lc a -> [(a,Rectangle)] -> [(a,Rectangle)] -> [(a,Rectangle)] combineResult _ wrs1 wrs2 = wrs1 ++ wrs2 comboHandleMess :: (LayoutClass l1 a, LayoutClass l2 a) => lc a -> l1 a -> l2 a -> SomeMessage -> X (lc a) @@ -239,10 +237,10 @@ class (Read (lc a), Show (lc a)) => LayoutCombinator lc a where pureComboHandleMess lc _ _ _ = lc sendToOther :: (LayoutClass l a) => lc a -> l a -> SomeMessage sendToOther _ _ = SomeMessage Hide - comboName :: lc a -> String - comboName = show - comboDescription :: (LayoutClass l1 a, LayoutClass l2 a) => lc a -> l1 a -> l2 a -> String - comboDescription lc l1 l2 = show lc <> if doFirst lc then description l1 else description l2 + comboDescription :: lc a -> String + comboDescription _ = "Combine" + combineDescription :: (LayoutClass l1 a, LayoutClass l2 a) => lc a -> l1 a -> l2 a -> String + combineDescription lc l1 l2 = comboDescription lc <> description l1 <> description l2 where "" <> x = x x <> y = x ++ " " ++ y @@ -270,7 +268,7 @@ instance (LayoutClass l1 a, LayoutClass l2 a, LayoutCombinator lc a) => LayoutCl _ -> do (wrs, nl1) <- emptyLayout l1 r return (wrs, Just $ CombinedLayout lc (fromMaybe l1 nl1) l2) handleMessage (CombinedLayout lc l1 l2) m = do - nc <- comboHandleMess lc l1 l2 m + nc <- comboHandleMess lc l1 l2 m choose <- chooser nc case choose of DoFirst -> do nl1 <- handleMessage l1 m @@ -283,4 +281,4 @@ instance (LayoutClass l1 a, LayoutClass l2 a, LayoutCombinator lc a) => LayoutCl nl2 <- handleMessage l2 m return $ Just $ CombinedLayout nc (fromMaybe l1 nl1) (fromMaybe l2 nl2) - description (CombinedLayout lc l1 l2) = comboDescription lc l1 l2 + description (CombinedLayout lc l1 l2) = combineDescription lc l1 l2 diff --git a/XMonad/Layout/PerWorkspace.hs b/XMonad/Layout/PerWorkspace.hs index 448e3ab..b734819 100644 --- a/XMonad/Layout/PerWorkspace.hs +++ b/XMonad/Layout/PerWorkspace.hs @@ -62,7 +62,7 @@ onWorkspace :: WorkspaceId -- ^ tags of workspaces to match -> (l1 a) -- ^ layout to use on matched workspaces -> (l2 a) -- ^ layout to use everywhere else -> CombinedLayout PerWorkspace l1 l2 a -onWorkspace wsId l1 l2 = CombinedLayout (PerWorkspace [wsId]) l1 l2 +onWorkspace wsId = CombinedLayout (PerWorkspace [wsId]) -- | Specify one layout to use on a particular set of workspaces, and -- another to use on all other workspaces. @@ -70,7 +70,7 @@ onWorkspaces :: [WorkspaceId] -- ^ tags of workspaces to match -> (l1 a) -- ^ layout to use on matched workspaces -> (l2 a) -- ^ layout to use everywhere else -> CombinedLayout PerWorkspace l1 l2 a -onWorkspaces wsIds l1 l2 = CombinedLayout (PerWorkspace wsIds) l1 l2 +onWorkspaces wsIds = CombinedLayout (PerWorkspace wsIds) -- | Structure for representing a workspace-specific layout along with -- a layout for all other workspaces. We store the tags of workspaces @@ -86,7 +86,6 @@ instance LayoutCombinator PerWorkspace a where chooser (PerWorkspace wsIds) = do t <- getCurrentTag return $ if t `elem` wsIds then DoFirst else DoSecond - doFirst (PerWorkspace _) = True -- | Get the tag of the currently active workspace. Note that this -- is only guaranteed to be the same workspace for which doLayout -- cgit v1.2.3