summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Operations.hs20
1 files changed, 6 insertions, 14 deletions
diff --git a/Operations.hs b/Operations.hs
index d5a9370..fb6c788 100644
--- a/Operations.hs
+++ b/Operations.hs
@@ -333,7 +333,12 @@ setFocusX w = withWindowSet $ \ws -> do
-- uppermost.
--
switchLayout :: X ()
-switchLayout = layout (\(x, xs) -> let xs' = xs ++ [x] in (head xs', tail xs'))
+switchLayout = do
+ sendMessage ModifyWindows
+ n <- gets (W.tag . W.workspace . W.current . windowset)
+ modify $ \s -> s { layouts = M.adjust switch n (layouts s) }
+ refresh
+ where switch (x, xs) = let xs' = xs ++ [x] in (head xs', tail xs')
-- | Throw a message to the current Layout possibly modifying how we
-- layout the windows, then refresh.
@@ -435,19 +440,6 @@ splitHorizontallyBy f (Rectangle sx sy sw sh) =
splitVerticallyBy f = (mirrorRect *** mirrorRect) . splitHorizontallyBy f . mirrorRect
------------------------------------------------------------------------
-
--- | layout. Modify the current workspace's layout with a pure
--- function and refresh.
-layout :: ((Layout, [Layout]) -> (Layout, [Layout])) -> X ()
-layout f = do
- sendMessage ModifyWindows
- modify $ \s ->
- let n = W.tag . W.workspace . W.current . windowset $ s
- (Just fl) = M.lookup n $ layouts s
- in s { layouts = M.insert n (f fl) (layouts s) }
- refresh
-
-------------------------------------------------------------------------
-- Utilities
-- | Return workspace visible on screen 'sc', or 0.