diff options
| -rw-r--r-- | src/Rahm/Desktop/Layout/PinWindow.hs | 13 |
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 |