From 059278bcd17a6598583d4c8ad2a34822fd061779 Mon Sep 17 00:00:00 2001 From: Adam Vogt Date: Tue, 10 Feb 2009 03:27:27 +0100 Subject: X.L.Mosaic: prevent users from causing non-termination with negative elements Ignore-this: 370a7d6249906f1743c6692758ce5aeb darcs-hash:20090210022727-1499c-f2fdcd99704982a75cedc877b81689453a4303fc.gz --- XMonad/Layout/Mosaic.hs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/XMonad/Layout/Mosaic.hs b/XMonad/Layout/Mosaic.hs index 9f726f7..eca1978 100644 --- a/XMonad/Layout/Mosaic.hs +++ b/XMonad/Layout/Mosaic.hs @@ -71,10 +71,11 @@ data Aspect instance Message Aspect data Mosaic a - {- | The relative magnitudes of the positive rational numbers provided - determine the relative areas that the windows receive. The first - number represents the size of the master window, the second is for the - next window in the stack, and so on. + {- | The relative magnitudes (the sign is ignored) of the rational numbers + - provided determine the relative areas that the windows receive. The + - first number represents the size of the master window, the second is for + - the next window in the stack, and so on. Windows without a list element + - are hidden. -} = Mosaic [Rational] -- override the aspect? current index, maximum index @@ -141,7 +142,8 @@ shrinkMaster [] = [] shrinkMaster (x:xs) = x/2:xs splits :: Int -> Rectangle -> [Rational] -> [[Rectangle]] -splits num rect sz = splitsL rect $ makeTree $ normalize $ reverse $ take num sz +splits num rect sz = splitsL rect $ makeTree $ normalize + $ map abs $ reverse $ take num sz -- recursively enumerate splits splitsL :: Rectangle -> Tree Rational -> [[Rectangle]] -- cgit v1.2.3