From 4126825a61896aa836ebc3b89a5a568e91172720 Mon Sep 17 00:00:00 2001 From: Lukas Mai Date: Wed, 2 Apr 2008 03:25:38 +0200 Subject: HintedGrid: try both bottom-up/top-down window placement to minimize unused space darcs-hash:20080402012538-462cf-fb6e0b0de2f02167f068b6abc244c5523dbecb7d.gz --- XMonad/Layout/HintedGrid.hs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/XMonad/Layout/HintedGrid.hs b/XMonad/Layout/HintedGrid.hs index 2031520..0e2b726 100644 --- a/XMonad/Layout/HintedGrid.hs +++ b/XMonad/Layout/HintedGrid.hs @@ -60,12 +60,17 @@ replicateS :: Int -> (a -> (b, a)) -> a -> ([b], a) replicateS n = runState . replicateM n . State doColumn :: Dimension -> Dimension -> Dimension -> [(D -> D)] -> [D] -doColumn width = doC +doColumn width height k adjs = + let + (h1, d1) = doC height k adjs + (h2, d2) = doC height k (reverse adjs) + in + if h2 < h1 then reverse d2 else d1 where - doC _ _ [] = [] - doC height n (f : fs) = adj : doC (height - h') (n - 1) fs + doC h _ [] = (h, []) + doC h n (f : fs) = (adj :) . doC (h - h') (n - 1) fs where - adj@(_, h') = f (width, height `div` n) + adj@(_, h') = f (width, h `div` n) doRect :: Dimension -> Dimension -> Dimension -> [[D -> D]] -> [Rectangle] doRect height = doR -- cgit v1.2.3