[Xmonad] darcs patch: keep focus stack.

Donald Bruce Stewart dons at cse.unsw.edu.au
Tue May 8 01:35:16 EDT 2007


droundy:
> Hi all,
> 
> Here's a cut at a focus stack.  It's a bit crude, but seems to work.  I had
> to tweak the rotate properties, since rotating the focus (obviously)
> changes the focus stack.  I don't think this weakening of those checks is
> really a Bad Thing.  And I'm a little puzzled how prop_delete_push ever
> passed.  Maybe it failed, and noone noticed? Or maybe we aren't running
> enough tests with large enough stack sizes, so we never ran into the case
> where the focus wasn't on the master window to start with? I don't know,
> but it suggests something is wrong.

Yes. Thanks for thinking about this!

Fixing the Arbitrary StackSet instance to set focus randomly on each
workspace,


        fs <- sequence [ if null s then return Nothing
                            else liftM Just (elements s)
                       | s <- ls ]
  
And then folding focus over each stac:


         foldr (\f s -> case f of
                            Nothing -> s
                            Just w  -> raiseFocus w s) s fs

We now have 3 QC properties failing, including the one making claims about the behaviour of 
focus/delete/push:

 1  delete.push identity     : Falsifiable after 2 tests
 2  shift reversible         : Falsifiable after 1 tests
 3  promote only swaps       : Falsifiable after 8 tests

For 1. we know this is a bug wrt. what we want to implement, in terms of where
focus goes on push >> delete. The others are likely to just be overly
constrained QC properties.

-- Don


More information about the Xmonad mailing list