aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Rahm')
-rw-r--r--src/Rahm/Desktop/Layout/PinWindow.hs13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/Rahm/Desktop/Layout/PinWindow.hs b/src/Rahm/Desktop/Layout/PinWindow.hs
index fe98afd..f993eec 100644
--- a/src/Rahm/Desktop/Layout/PinWindow.hs
+++ b/src/Rahm/Desktop/Layout/PinWindow.hs
@@ -9,6 +9,7 @@ import Control.Monad.Trans (lift)
import Control.Monad.Trans.Maybe (MaybeT (..))
import Data.Foldable (find)
import Data.List (nubBy)
+import qualified Data.List as List
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Maybe (fromMaybe, mapMaybe, maybe)
@@ -141,9 +142,9 @@ pinnable = PinWindowLayout
-- window shifts and whatnot.
withWindowsUnpinned :: [Window] -> X () -> X ()
withWindowsUnpinned wins fn =
- ( do
- mapM_ unpinWindow wins
- fn
- mapM_ pinWindow wins
- )
- `catchX` mapM_ pinWindow wins
+ do
+ allPinnedWindows <- pinnedWindows
+ let windowsToUnpin = allPinnedWindows `List.intersect` wins
+ mapM_ unpinWindow windowsToUnpin
+ fn `catchX` mapM_ pinWindow windowsToUnpin
+ mapM_ pinWindow windowsToUnpin