From 891963a5f8893d45dca50b95779710a3455cd358 Mon Sep 17 00:00:00 2001 From: Jamie Webb Date: Tue, 2 Oct 2007 02:12:54 +0200 Subject: Fix infinite loop in ResizableTile serialization darcs-hash:20071002001254-74a73-8e30b0bdd3f3fe8a3c7754e564a8bbf1532149c2.gz --- ResizableTile.hs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ResizableTile.hs b/ResizableTile.hs index 7f0fa60..77ec8fd 100644 --- a/ResizableTile.hs +++ b/ResizableTile.hs @@ -34,7 +34,7 @@ import Control.Monad -- -- and redefine "tiled" as: -- --- > tiled = T.Tall nmaster delta ratio (repeat 1) +-- > tiled = T.Tall nmaster delta ratio [] data MirrorResize = MirrorShrink | MirrorExpand deriving Typeable instance Message MirrorResize @@ -43,7 +43,7 @@ data Tall a = Tall Int Rational Rational [Rational] deriving (Show, Read) instance Layout Tall a where doLayout (Tall nmaster _ frac mfrac) r = return . (\x->(x,Nothing)) . - ap zip (tile frac mfrac r nmaster . length) . W.integrate + ap zip (tile frac (mfrac ++ repeat 1) r nmaster . length) . W.integrate handleMessage (Tall nmaster delta frac mfrac) m = do ms <- (W.stack . W.workspace . W.current) `fmap` gets windowset case ms of @@ -57,10 +57,9 @@ instance Layout Tall a where mresize MirrorExpand s = mresize' s (0-delta) mresize' s d = let n = length $ W.up s total = n + (length $ W.down s) + 1 - in Tall nmaster delta frac - (modifymfrac mfrac d (if n == (nmaster-1) || n == (total-1) - then n-1 - else n)) + pos = if n == (nmaster-1) || n == (total-1) then n-1 else n + mfrac' = modifymfrac (mfrac ++ repeat 1) d pos + in Tall nmaster delta frac $ take total mfrac' modifymfrac [] _ _ = [] modifymfrac (f:fx) d n | n == 0 = f+d : fx | otherwise = f : modifymfrac fx d (n-1) -- cgit v1.2.3