Make LayoutHints a decoration aware layout modifier

This commit is contained in:
Andrea Rossato
2008-01-31 08:23:14 +00:00
parent de1d0432b2
commit 3b04fd4235
2 changed files with 9 additions and 5 deletions

View File

@@ -24,7 +24,7 @@ module XMonad.Layout.Decoration
, shrinkText, CustomShrink ( CustomShrink )
, Shrinker (..), DefaultShrinker
, module XMonad.Layout.LayoutModifier
, fi
, isDecoration, fi
) where
import Data.Maybe
@@ -215,6 +215,9 @@ updateDeco sh c fs ((w,_),(dw,Just (Rectangle _ _ wh ht))) = do
paintAndWrite dw fs wh ht 1 bc borderc tc bc AlignCenter name
updateDeco _ _ _ (_,(w,Nothing)) = hideWindow w
isDecoration :: Window -> X Bool
isDecoration w = withDisplay (io . flip getWindowAttributes w) >>= return . wa_override_redirect
shrinkWhile :: (String -> [String]) -> (String -> X Bool) -> String -> X String
shrinkWhile sh p x = sw $ sh x
where sw [n] = return n

View File

@@ -21,7 +21,7 @@ module XMonad.Layout.LayoutHints (
import XMonad hiding ( trace )
import XMonad.Layout.LayoutModifier
import XMonad.Layout.Decoration ( isDecoration )
-- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
--
@@ -54,8 +54,9 @@ instance LayoutModifier LayoutHints Window where
xs' <- mapM (applyHint bW) xs
return (xs', Nothing)
where
applyHint bW (w,Rectangle a b c d) =
applyHint bW (w,r@(Rectangle a b c d)) =
withDisplay $ \disp -> do
sh <- io $ getWMNormalHints disp w
isd <- isDecoration w
sh <- io $ getWMNormalHints disp w
let (c',d') = adjBorders 1 bW . applySizeHints sh . adjBorders bW (-1) $ (c,d)
return (w, Rectangle a b c' d')
return (w, if isd then r else Rectangle a b c' d')