mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
Merge pull request #914 from liskin/noborders-resetborder
X.L.NoBorders: Listen to DestroyWindowEvents and garbage collect
This commit is contained in:
commit
0dc879698d
@ -24,6 +24,13 @@
|
||||
used to avoid flicker and unnecessary workspace reshuffling if multiple
|
||||
`xrandr` commands are used to reconfigure the display layout.
|
||||
|
||||
* `XMonad.Layout.NoBorders`
|
||||
|
||||
- It's no longer necessary to use `borderEventHook` to garbage collect
|
||||
`alwaysHidden`/`neverHidden` lists. The layout listens to
|
||||
`DestroyWindowEvent` messages instead, which are broadcast to layouts
|
||||
since xmonad v0.17.0.
|
||||
|
||||
## 0.18.1 (August 20, 2024)
|
||||
|
||||
### Breaking Changes
|
||||
|
@ -143,10 +143,8 @@ data ConfigurableBorder p w = ConfigurableBorder
|
||||
|
||||
-- | Only necessary with 'BorderMessage' - remove non-existent windows from the
|
||||
-- 'alwaysHidden' or 'neverHidden' lists.
|
||||
{-# DEPRECATED borderEventHook "No longer needed." #-}
|
||||
borderEventHook :: Event -> X All
|
||||
borderEventHook DestroyWindowEvent{ ev_window = w } = do
|
||||
broadcastMessage $ ResetBorder w
|
||||
return $ All True
|
||||
borderEventHook _ = return $ All True
|
||||
|
||||
instance (Read p, Show p, SetsAmbiguous p) => LayoutModifier (ConfigurableBorder p) Window where
|
||||
@ -167,14 +165,17 @@ instance (Read p, Show p, SetsAmbiguous p) => LayoutModifier (ConfigurableBorder
|
||||
in ConfigurableBorder gh <$> consNewIf ah (not b)
|
||||
<*> consNewIf nh b
|
||||
<*> pure ch
|
||||
| Just (ResetBorder w) <- fromMessage m =
|
||||
| Just (ResetBorder w) <- fromMessage m = resetBorder w
|
||||
| Just DestroyWindowEvent { ev_window = w } <- fromMessage m = resetBorder w
|
||||
| otherwise = Nothing
|
||||
where
|
||||
resetBorder w =
|
||||
let delete' e l = if e `elem` l then (True,delete e l) else (False,l)
|
||||
(da,ah') = delete' w ah
|
||||
(dn,nh') = delete' w nh
|
||||
in if da || dn
|
||||
then Just cb { alwaysHidden = ah', neverHidden = nh' }
|
||||
else Nothing
|
||||
| otherwise = Nothing
|
||||
|
||||
-- | SetsAmbiguous allows custom actions to generate lists of windows that
|
||||
-- should not have borders drawn through 'ConfigurableBorder'
|
||||
|
Loading…
x
Reference in New Issue
Block a user