diff options
author | David Roundy <droundy@darcs.net> | 2008-02-05 21:23:43 +0100 |
---|---|---|
committer | David Roundy <droundy@darcs.net> | 2008-02-05 21:23:43 +0100 |
commit | 387cac87e5f32735e2ff8dbb2fb620dbf46edccf (patch) | |
tree | 792b46a3b05ab03cfadfed1de13105a4bbec64d0 /XMonad/Layout | |
parent | 6713e15c2f6f2859daa96f00c01bc639da219fdd (diff) | |
download | XMonadContrib-387cac87e5f32735e2ff8dbb2fb620dbf46edccf.tar.gz XMonadContrib-387cac87e5f32735e2ff8dbb2fb620dbf46edccf.tar.xz XMonadContrib-387cac87e5f32735e2ff8dbb2fb620dbf46edccf.zip |
make tabbed work nicely with LayoutCombinators and WindowNavigation.
The problem is that WindowNavigation assumes all windows are navigable, and
it was getting confused by decorations. With a bit of work, we can
decorate windows *after* combining layouts just fine.
darcs-hash:20080205202343-72aca-38ec52df06997059edaac4085a6f1d86d5a756ae.gz
Diffstat (limited to '')
-rw-r--r-- | XMonad/Layout/Tabbed.hs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/XMonad/Layout/Tabbed.hs b/XMonad/Layout/Tabbed.hs index 33596ac..db4ba3e 100644 --- a/XMonad/Layout/Tabbed.hs +++ b/XMonad/Layout/Tabbed.hs @@ -17,7 +17,7 @@ module XMonad.Layout.Tabbed ( -- * Usage: -- $usage - tabbed + tabbed, addTabs , Theme (..) , defaultTheme , TabbedDecoration (..) @@ -61,13 +61,21 @@ tabbed :: (Eq a, Shrinker s) => s -> Theme -> ModifiedLayout (Decoration TabbedDecoration s) Simplest a tabbed s c = decoration s c Tabbed Simplest +addTabs :: (Eq a, LayoutClass l a, Shrinker s) => s -> Theme -> l a + -> ModifiedLayout (Decoration TabbedDecoration s) l a +addTabs s c l = decoration s c Tabbed l + data TabbedDecoration a = Tabbed deriving (Read, Show) instance Eq a => DecorationStyle TabbedDecoration a where describeDeco _ = "Tabbed" - decorateFirst _ = False - pureDecoration _ _ ht (Rectangle x y wh _) s wrs (w,_) = Just $ Rectangle nx y nwh (fi ht) - where nwh = wh `div` max 1 (fi $ length wrs) - nx = case w `elemIndex` (S.integrate s) of + decorateFirst _ = True + pureDecoration _ _ ht _ s wrs (w,r@(Rectangle x y wh _)) = + if length wrs' <= 1 then Nothing + else Just $ Rectangle nx y nwh (fi ht) + where wrs' = filter ((==r) . snd) wrs + ws = map fst wrs' + nwh = wh `div` max 1 (fi $ length wrs') + nx = case elemIndex w $ filter (`elem` ws) (S.integrate s) of Just i -> x + (fi nwh * fi i) Nothing -> x |