diff --git a/lib/awful/layout/suit/spiral.lua.in b/lib/awful/layout/suit/spiral.lua.in index f96a7d17..188977cb 100644 --- a/lib/awful/layout/suit/spiral.lua.in +++ b/lib/awful/layout/suit/spiral.lua.in @@ -7,6 +7,7 @@ -- Grab environment we need local ipairs = ipairs +local math = math -- awful.layout.suit.spiral local spiral = {} @@ -15,28 +16,35 @@ local function do_spiral(p, _spiral) local wa = p.workarea local cls = p.clients local n = #cls + local old_width, old_height = wa.width, 2 * wa.height for k, c in ipairs(cls) do - if k < n then - if k % 2 == 0 then - wa.height = wa.height / 2 - else - wa.width = wa.width / 2 + if k % 2 == 0 then + wa.width, old_width = math.ceil(old_width / 2), wa.width + if k ~= n then + wa.height, old_height = math.floor(wa.height / 2), wa.height + end + else + wa.height, old_height = math.ceil(old_height / 2), wa.height + if k ~= n then + wa.width, old_width = math.floor(wa.width / 2), wa.width end end if k % 4 == 0 and _spiral then wa.x = wa.x - wa.width - elseif k % 2 == 0 or - (k % 4 == 3 and k < n and _spiral) then - wa.x = wa.x + wa.width + elseif k % 2 == 0 then + wa.x = wa.x + old_width + elseif k % 4 == 3 and k < n and _spiral then + wa.x = wa.x + math.ceil(old_width / 2) end if k % 4 == 1 and k ~= 1 and _spiral then wa.y = wa.y - wa.height - elseif k % 2 == 1 and k ~= 1 or - (k % 4 == 0 and k < n and _spiral) then - wa.y = wa.y + wa.height + elseif k % 2 == 1 and k ~= 1 then + wa.y = wa.y + old_height + elseif k % 4 == 0 and k < n and _spiral then + wa.y = wa.y + math.ceil(old_height / 2) end local g = {