From 7e3cb59c23d4254998a155f9c54c2e022c8b8fa4 Mon Sep 17 00:00:00 2001 From: Lukas Mai Date: Wed, 2 Apr 2008 04:28:46 +0000 Subject: [PATCH] HintedGrid: guesstimate window flexibility and layout rigid windows first --- XMonad/Layout/HintedGrid.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/XMonad/Layout/HintedGrid.hs b/XMonad/Layout/HintedGrid.hs index 0e2b7266..731af890 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