From aa7b17533695687a9c31070f5d9845c52493856e Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Mon, 11 Jun 2007 20:34:39 +0200 Subject: Updates to work with recent API changes darcs-hash:20070611183439-a5988-c3d6cc194fa83f012ab49d6d79130ff459dcdfe1.gz --- Circle.hs | 3 ++- GreedyView.hs | 2 +- HintedTile.hs | 10 ++++++---- Mosaic.hs | 3 ++- RotView.hs | 2 +- Spiral.hs | 3 ++- Tabbed.hs | 11 ++++++----- TwoPane.hs | 3 ++- 8 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Circle.hs b/Circle.hs index 9e30c83..18edf17 100644 --- a/Circle.hs +++ b/Circle.hs @@ -2,9 +2,10 @@ module XMonadContrib.Circle (circle) where -- actually it's an ellipse import Graphics.X11.Xlib import XMonad +import StackSet (integrate) circle :: Layout -circle = Layout { doLayout = circleLayout, +circle = Layout { doLayout = \r -> circleLayout r . integrate, modifyLayout = return . const Nothing } circleLayout :: Rectangle -> [Window] -> X [(Window, Rectangle)] diff --git a/GreedyView.hs b/GreedyView.hs index 3303799..d9f48c2 100644 --- a/GreedyView.hs +++ b/GreedyView.hs @@ -25,7 +25,7 @@ module XMonadContrib.GreedyView (greedyView) where -import StackSet as W +import StackSet as W hiding (filter) import XMonad import Operations import Data.List (find) diff --git a/HintedTile.hs b/HintedTile.hs index f3a811a..22ea946 100644 --- a/HintedTile.hs +++ b/HintedTile.hs @@ -2,6 +2,7 @@ module XMonadContrib.HintedTile (tall, wide) where import XMonad import Operations (Resize(..), IncMasterN(..), applySizeHints) +import qualified StackSet as W import {-# SOURCE #-} Config (borderWidth) import Graphics.X11.Xlib import Graphics.X11.Xlib.Extras @@ -18,10 +19,11 @@ wide = tile splitVertically divideHorizontally tall = tile splitHorizontally divideVertically tile split divide nmaster delta frac = - Layout { doLayout = \r w -> do { hints <- sequence (map getHints w) - ; return $ zip w (tiler frac r `uncurry` splitAt nmaster hints) } - , modifyLayout = \m -> fmap resize (fromMessage m) `mplus` - fmap incmastern (fromMessage m) } + Layout { doLayout = \r w' -> let w = W.integrate w' + in do { hints <- sequence (map getHints w) + ; return $ zip w (tiler frac r `uncurry` splitAt nmaster hints) } + , modifyLayout = \m -> return $ fmap resize (fromMessage m) `mplus` + fmap incmastern (fromMessage m) } where resize Shrink = tile split divide nmaster delta (frac-delta) resize Expand = tile split divide nmaster delta (frac+delta) diff --git a/Mosaic.hs b/Mosaic.hs index 61d19ba..34e536e 100644 --- a/Mosaic.hs +++ b/Mosaic.hs @@ -31,6 +31,7 @@ import Data.Ratio import Graphics.X11.Xlib import XMonad hiding ( trace ) import Operations ( full, Resize(Shrink, Expand) ) +import qualified StackSet as W import qualified Data.Map as M import Data.List ( sort ) import Data.Typeable ( Typeable ) @@ -68,7 +69,7 @@ flexibility :: Double flexibility = 0.1 mosaic :: Double -> Double -> M.Map NamedWindow [WindowHint] -> Layout -mosaic delta tileFrac hints = full { doLayout = mosaicL tileFrac hints, modifyLayout = return . mlayout } +mosaic delta tileFrac hints = full { doLayout = \r -> mosaicL tileFrac hints r . W.integrate, modifyLayout = return . mlayout } where mlayout x = (m1 `fmap` fromMessage x) `mplus` (m2 `fmap` fromMessage x) m1 Shrink = mosaic delta (tileFrac/(1+delta)) hints m1 Expand = mosaic delta (tileFrac*(1+delta)) hints diff --git a/RotView.hs b/RotView.hs index 0bc995b..1fc421e 100644 --- a/RotView.hs +++ b/RotView.hs @@ -13,7 +13,7 @@ import Data.List ( sortBy ) import Data.Maybe ( listToMaybe ) import XMonad -import StackSet +import StackSet hiding (filter) import qualified Operations as O rotView :: Bool -> X () diff --git a/Spiral.hs b/Spiral.hs index 6701bb6..3be033d 100644 --- a/Spiral.hs +++ b/Spiral.hs @@ -4,6 +4,7 @@ import Graphics.X11.Xlib import Operations import Data.Ratio import XMonad +import qualified StackSet as W -- -- Spiral layout @@ -32,7 +33,7 @@ blend scale ratios = zipWith (+) ratios scaleFactors scaleFactors = map (* step) . reverse . take len $ [0..] spiral :: Rational -> Layout -spiral scale = Layout { doLayout = fibLayout, +spiral scale = Layout { doLayout = \r -> fibLayout r . W.integrate, modifyLayout = \m -> return $ fmap resize $ fromMessage m } where fibLayout sc ws = return $ zip ws rects diff --git a/Tabbed.hs b/Tabbed.hs index c85f224..106afa8 100644 --- a/Tabbed.hs +++ b/Tabbed.hs @@ -24,10 +24,11 @@ import XMonadContrib.NamedWindows tabbed :: Layout tabbed = Layout { doLayout = dolay, modifyLayout = const (return Nothing) } -dolay :: Rectangle -> [Window] -> X [(Window, Rectangle)] -dolay sc [w] = return [(w,sc)] -dolay sc@(Rectangle x y wid _) ws = - do let ts = gentabs x y wid (length ws) +dolay :: Rectangle -> W.Stack Window -> X [(Window, Rectangle)] +dolay sc (W.Node w [] []) = return [(w,sc)] +dolay sc@(Rectangle x y wid _) s@(W.Node w _ _) = + do let ws = W.integrate s + ts = gentabs x y wid (length ws) tws = zip ts ws maketab (t,w) = newDecoration w t 1 0x000000 0x777777 (drawtab t w) (focus w) drawtab r@(Rectangle _ _ wt ht) w d w' gc = @@ -48,7 +49,7 @@ dolay sc@(Rectangle x y wid _) ws = (fromIntegral (wt `div` 2) - fromIntegral (namew `div` 2)) (fromIntegral (ht `div` 2) + fromIntegral (nameh `div` 2)) name forM tws maketab - return [ (w,shrink sc) | w <- ws ] + return [ (w,shrink sc) ] shrink :: Rectangle -> Rectangle shrink (Rectangle x y w h) = Rectangle x (y+tabsize) w (h-tabsize) diff --git a/TwoPane.hs b/TwoPane.hs index 18abdf6..ba6d616 100644 --- a/TwoPane.hs +++ b/TwoPane.hs @@ -13,9 +13,10 @@ import qualified StackSet as W import Control.Monad.State (gets) twoPane :: Rational -> Rational -> Layout -twoPane delta split = Layout { doLayout = arrange, modifyLayout = message } +twoPane delta split = Layout { doLayout = \r -> arrange r . W.integrate, modifyLayout = message } where arrange rect ws@(w:x:_) = do + -- TODO this is buggy, it might peek another workspace (Just f) <- gets (W.peek . windowset) -- safe because of pattern match above let y = if f == w then x else f (left, right) = splitHorizontallyBy split rect -- cgit v1.2.3