aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm/Desktop/Layout/PinWindow.hs
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2023-12-08 16:42:08 -0700
committerJosh Rahm <rahm@google.com>2023-12-08 16:42:08 -0700
commit36b1792d90b5e58f66c730652e9b0c2cd38570e7 (patch)
treefe7edabacb3f33dcc9a1ec0c7785e4b379fe2b81 /src/Rahm/Desktop/Layout/PinWindow.hs
parentb389418fb85948477447db07aee13517dc9148c8 (diff)
downloadrde-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/Rahm/Desktop/Layout/PinWindow.hs')
-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