From d8cc1c74d7c0342a6fcb4fb53f1681c059c3d5cc Mon Sep 17 00:00:00 2001 From: Devin Mullins Date: Sat, 3 Nov 2007 16:03:58 +0100 Subject: clean up destroyed windows from urgents list darcs-hash:20071103150358-78224-3ebb06a664f46b5277cd9fb84b76820a45eb0cc2.gz --- UrgencyHook.hs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'UrgencyHook.hs') diff --git a/UrgencyHook.hs b/UrgencyHook.hs index e22ee75..8f59af8 100644 --- a/UrgencyHook.hs +++ b/UrgencyHook.hs @@ -35,7 +35,7 @@ import Control.Monad (when) import Control.Monad.State (gets) import Data.Bits (testBit, clearBit) import Data.IORef -import Data.List ((\\)) +import Data.List ((\\), delete) import Data.Maybe (listToMaybe) import qualified Data.Set as S import Graphics.X11.Xlib @@ -97,7 +97,7 @@ data WithUrgencyHook a = WithUrgencyHook deriving (Read, Show) instance LayoutModifier WithUrgencyHook Window where handleMess _ mess - | Just (PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w }) <- fromMessage mess = do + | Just PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w } <- fromMessage mess = do when (t == propertyNotify && a == wM_HINTS) $ withDisplay $ \dpy -> do wmh@WMHints { wmh_flags = flags } <- io $ getWMHints dpy w when (testBit flags urgencyHintBit) $ do @@ -115,6 +115,9 @@ instance LayoutModifier WithUrgencyHook Window where -- effect of ignoring *all* urgency-clearing messages, some of which might -- be legitimate. Let's wait for bug reports on that, though. return Nothing + | Just DestroyWindowEvent {ev_window = w} <- fromMessage mess = do + adjustUrgents (delete w) + return Nothing | otherwise = return Nothing -- cgit v1.2.3