From 36b1792d90b5e58f66c730652e9b0c2cd38570e7 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Fri, 8 Dec 2023 16:42:08 -0700 Subject: Fix withWindowsUnpinned to not pin unpinned windows after the function is completed --- src/Rahm/Desktop/Layout/PinWindow.hs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/Rahm/Desktop/Layout/PinWindow.hs') 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 -- cgit