From 1ba3225eb8c485b80a709859dbe525fb4960aea9 Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Tue, 11 Dec 2007 08:48:10 +0100 Subject: 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 --- XMonad/Main.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'XMonad/Main.hs') 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. -- cgit v1.2.3