From cc90050738cf619c165358cc4c3fa90150e205ee Mon Sep 17 00:00:00 2001 From: Norbert Zeh Date: Sat, 30 Oct 2010 00:15:51 +0200 Subject: X.L.Maximize: Make layout forget maximized window when it is closed Ignore-this: 9e8bfacce7f90634532078584c82940a The X.L.Maximize layout modifier does not track whether the window it stores as maximized does still exist. The X server reuses window IDs. As a result, I was able to reproduce the following behaviour (e.g., by opening and closing xpdf windows): Create a window, maximize it, close it without restoring it to its normal state. Open a new window with the same window ID (e.g., an xpdf window after just closing an xpdf window). The new window will open maximized, which is not what one would expect. This patch addresses this problem, removing the ID of the maximized window from the layout when the maximized window is closed. darcs-hash:20101029221551-18a2b-985a1a8aff5522d2ef05cbb53f18ba459daf5ef8.gz --- XMonad/Layout/Maximize.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'XMonad/Layout/Maximize.hs') diff --git a/XMonad/Layout/Maximize.hs b/XMonad/Layout/Maximize.hs index 2cf0087..157a45a 100644 --- a/XMonad/Layout/Maximize.hs +++ b/XMonad/Layout/Maximize.hs @@ -64,12 +64,14 @@ instance LayoutModifier Maximize Window where pureModifier (Maximize (Just target)) rect (Just (S.Stack focused _ _)) wrs = if focused == target then (maxed ++ rest, Nothing) - else (rest ++ maxed, Nothing) + else (rest ++ maxed, lay) where (toMax, rest) = partition (\(w, _) -> w == target) wrs maxed = map (\(w, _) -> (w, maxRect)) toMax maxRect = Rectangle (rect_x rect + 25) (rect_y rect + 25) (rect_width rect - 50) (rect_height rect - 50) + lay | null maxed = Just (Maximize Nothing) + | otherwise = Nothing pureModifier _ _ _ wrs = (wrs, Nothing) pureMess (Maximize mw) m = case fromMessage m of -- cgit v1.2.3