From bc99bc2c41fba3f3e8e35b9ee512adeedea31d6a Mon Sep 17 00:00:00 2001 From: Lukas Mai Date: Wed, 2 Apr 2008 06:28:46 +0200 Subject: HintedGrid: guesstimate window flexibility and layout rigid windows first darcs-hash:20080402042846-462cf-02aa424c4357675351146f9bdeffe8ba82d9fb9b.gz --- XMonad/Layout/HintedGrid.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'XMonad/Layout/HintedGrid.hs') diff --git a/XMonad/Layout/HintedGrid.hs b/XMonad/Layout/HintedGrid.hs index 0e2b726..731af89 100644 --- a/XMonad/Layout/HintedGrid.hs +++ b/XMonad/Layout/HintedGrid.hs @@ -27,6 +27,8 @@ import XMonad hiding (windows) import XMonad.StackSet import Control.Monad.State +import Data.List +import Data.Ord infixr 9 . (.) :: (Functor f) => (a -> b) -> f a -> f b @@ -62,10 +64,10 @@ replicateS n = runState . replicateM n . State doColumn :: Dimension -> Dimension -> Dimension -> [(D -> D)] -> [D] doColumn width height k adjs = let - (h1, d1) = doC height k adjs - (h2, d2) = doC height k (reverse adjs) + (ind, fs) = unzip . sortBy (comparing $ snd . ($ (width, height)) . snd) . zip [0 :: Int ..] $ adjs + (_, ds) = doC height k fs in - if h2 < h1 then reverse d2 else d1 + map snd . sortBy (comparing fst) . zip ind $ ds where doC h _ [] = (h, []) doC h n (f : fs) = (adj :) . doC (h - h') (n - 1) fs -- cgit v1.2.3