diff --git a/XMonad/Actions/CycleRecentWS.hs b/XMonad/Actions/CycleRecentWS.hs index 3a72d20b..bc5182eb 100644 --- a/XMonad/Actions/CycleRecentWS.hs +++ b/XMonad/Actions/CycleRecentWS.hs @@ -136,8 +136,9 @@ cycleWindowSets genOptions mods keyNext keyPrev = do -- new 'WindowSet' may have accumulated. unView :: forall i l a s sd. (Eq i, Eq s) => StackSet i l a s sd -> StackSet i l a s sd -> StackSet i l a s sd -unView w0 = fixOrderH . fixOrderV . view (currentTag w0) +unView w0 w1 = fixOrderH . fixOrderV . view' (currentTag w0) $ w1 where + view' = if screen (current w0) == screen (current w1) then greedyView else view fixOrderV w | v : vs <- visible w = w{ visible = insertAt (pfxV (visible w0) vs) v vs } | otherwise = w fixOrderH w | h : hs <- hidden w = w{ hidden = insertAt (pfxH (hidden w0) hs) h hs } diff --git a/tests/CycleRecentWS.hs b/tests/CycleRecentWS.hs index 737e8aea..d09f0e52 100644 --- a/tests/CycleRecentWS.hs +++ b/tests/CycleRecentWS.hs @@ -6,7 +6,7 @@ import Test.Hspec.QuickCheck import Test.QuickCheck import XMonad.Actions.CycleRecentWS (unView) -import XMonad.StackSet (view, mapLayout) +import XMonad.StackSet (view, greedyView, mapLayout) import Instances import Utils (tags) @@ -17,7 +17,8 @@ spec = do prop_unView :: T -> Property prop_unView ss = conjoin - [ counterexample (show t) (unView ss (state (view t ss)) === state ss) - | t <- tags ss ] + [ counterexample desc (unView ss (state (v t ss)) === state ss) + | t <- tags ss + , (desc, v) <- [("view " <> show t, view), ("greedyView " <> show t, greedyView)] ] where state = mapLayout succ