From 387cac87e5f32735e2ff8dbb2fb620dbf46edccf Mon Sep 17 00:00:00 2001 From: David Roundy Date: Tue, 5 Feb 2008 21:23:43 +0100 Subject: 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 --- XMonad/Layout/Tabbed.hs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'XMonad/Layout/Tabbed.hs') 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 -- cgit v1.2.3