diff options
author | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-12-11 08:48:10 +0100 |
---|---|---|
committer | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-12-11 08:48:10 +0100 |
commit | 1ba3225eb8c485b80a709859dbe525fb4960aea9 (patch) | |
tree | 67c0249c4648097052867a76517deca8534ffda3 | |
parent | fa9f240c658446d89c98f1ba6589b2b34472a3b8 (diff) | |
download | metatile-1ba3225eb8c485b80a709859dbe525fb4960aea9.tar metatile-1ba3225eb8c485b80a709859dbe525fb4960aea9.zip |
Clean up stale mapped/waitingUnmap state in handle rather than unmanage.
This is an attempt to fix issue #96. Thanks to jcreigh for the insights
necessary to fix the bug.
darcs-hash:20071211074810-a5988-47be5e16650bf0c0ad5d0e638d03753a78958fd6
-rw-r--r-- | XMonad/Main.hs | 5 | ||||
-rw-r--r-- | XMonad/Operations.hs | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/XMonad/Main.hs b/XMonad/Main.hs index c25eabf..60d8e6a 100644 --- a/XMonad/Main.hs +++ b/XMonad/Main.hs @@ -143,7 +143,10 @@ handle (MapRequestEvent {ev_window = w}) = withDisplay $ \dpy -> do -- window destroyed, unmanage it -- window gone, unmanage it -handle (DestroyWindowEvent {ev_window = w}) = whenX (isClient w) $ unmanage w +handle (DestroyWindowEvent {ev_window = w}) = whenX (isClient w) $ do + unmanage w + modify (\s -> s { mapped = S.delete w (mapped s) + , waitingUnmap = M.delete w (waitingUnmap s)}) -- We track expected unmap events in waitingUnmap. We ignore this event unless -- it is synthetic or we are not expecting an unmap notification from a window. diff --git a/XMonad/Operations.hs b/XMonad/Operations.hs index f13e2ca..5e87f32 100644 --- a/XMonad/Operations.hs +++ b/XMonad/Operations.hs @@ -77,7 +77,6 @@ unmanage :: Window -> X () unmanage w = do windows (W.delete w) setWMState w withdrawnState - modify (\s -> s {mapped = S.delete w (mapped s), waitingUnmap = M.delete w (waitingUnmap s)}) -- | Modify the size of the status gap at the top of the current screen -- Taking a function giving the current screen, and current geometry. |