diff options
| author | Josh Rahm <rahm@google.com> | 2023-12-08 16:42:08 -0700 |
|---|---|---|
| committer | Josh Rahm <rahm@google.com> | 2023-12-08 16:42:08 -0700 |
| commit | 36b1792d90b5e58f66c730652e9b0c2cd38570e7 (patch) | |
| tree | fe7edabacb3f33dcc9a1ec0c7785e4b379fe2b81 /src | |
| parent | b389418fb85948477447db07aee13517dc9148c8 (diff) | |
| download | rde-36b1792d90b5e58f66c730652e9b0c2cd38570e7.tar.gz rde-36b1792d90b5e58f66c730652e9b0c2cd38570e7.tar.bz2 rde-36b1792d90b5e58f66c730652e9b0c2cd38570e7.zip | |
Fix withWindowsUnpinned to not pin unpinned windows after the function is completed
Diffstat (limited to 'src')
| -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 |