mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
X.L.LayoutHints: refresh only if hints are not satisfied
This commit is contained in:
parent
758094e4c7
commit
82dff7f91d
@ -25,7 +25,9 @@ module XMonad.Layout.LayoutHints
|
|||||||
|
|
||||||
import XMonad(LayoutClass(runLayout), mkAdjust, Window,
|
import XMonad(LayoutClass(runLayout), mkAdjust, Window,
|
||||||
Dimension, Position, Rectangle(Rectangle), D,
|
Dimension, Position, Rectangle(Rectangle), D,
|
||||||
X, refresh, Event(..), propertyNotify, wM_NORMAL_HINTS)
|
X, refresh, Event(..), propertyNotify, wM_NORMAL_HINTS,
|
||||||
|
(<&&>), io, applySizeHints, whenX, isClient, withDisplay,
|
||||||
|
getWindowAttributes, getWMNormalHints, WindowAttributes(..))
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
|
|
||||||
import XMonad.Layout.Decoration(isInStack)
|
import XMonad.Layout.Decoration(isInStack)
|
||||||
@ -249,8 +251,16 @@ centerPlacement' cf root assigned
|
|||||||
|
|
||||||
-- | Event hook that refreshes the layout whenever a window changes its hints.
|
-- | Event hook that refreshes the layout whenever a window changes its hints.
|
||||||
hintsEventHook :: Event -> X All
|
hintsEventHook :: Event -> X All
|
||||||
hintsEventHook (PropertyEvent { ev_event_type = t, ev_atom = a })
|
hintsEventHook (PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w })
|
||||||
| t == propertyNotify && a == wM_NORMAL_HINTS = do
|
| t == propertyNotify && a == wM_NORMAL_HINTS = do
|
||||||
refresh
|
whenX (isClient w <&&> hintsMismatch w) $ refresh
|
||||||
return (All True)
|
return (All True)
|
||||||
hintsEventHook _ = return (All True)
|
hintsEventHook _ = return (All True)
|
||||||
|
|
||||||
|
-- | True if the window's current size does not satisfy its size hints.
|
||||||
|
hintsMismatch :: Window -> X Bool
|
||||||
|
hintsMismatch w = withDisplay $ \d -> io $ do
|
||||||
|
wa <- getWindowAttributes d w
|
||||||
|
sh <- getWMNormalHints d w
|
||||||
|
let dim = (fromIntegral $ wa_width wa, fromIntegral $ wa_height wa)
|
||||||
|
return $ dim /= applySizeHints 0 sh dim
|
||||||
|
Loading…
x
Reference in New Issue
Block a user