aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm/Desktop/StackSet.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Rahm/Desktop/StackSet.hs')
-rw-r--r--src/Rahm/Desktop/StackSet.hs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Rahm/Desktop/StackSet.hs b/src/Rahm/Desktop/StackSet.hs
index 652dafe..6b90fab 100644
--- a/src/Rahm/Desktop/StackSet.hs
+++ b/src/Rahm/Desktop/StackSet.hs
@@ -46,12 +46,11 @@ mapWindows fn (StackSet cur vis hid float) =
mapWindowsWorkspace (Workspace t l stack) =
Workspace t l (fmap (fmap fn) stack)
-swapWindows :: (Ord a) => a -> a -> StackSet i l a s d -> StackSet i l a s d
-swapWindows wa wb = mapWindows $ \w ->
- case w of
- _ | w == wa -> wb
- _ | w == wb -> wa
- _ -> w
+swapWindows :: (Ord a) => [(a, a)] -> StackSet i l a s d -> StackSet i l a s d
+swapWindows toSwap = mapWindows $ \w ->
+ fromMaybe w (Map.lookup w toSwapM)
+ where
+ toSwapM = Map.fromList (toSwap ++ map (\(a, b) -> (b, a)) toSwap)
masterWindow :: StackSet i l a s sd -> Maybe a
masterWindow = head . integrate' . stack . workspace . current