From dc22370cf1092ed7043d1cc1cda3ab0ec34bc91c Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 10 Mar 2013 13:18:50 +0800 Subject: [PATCH] bugfix: intersected geom should be initiated with a fresh copy of self --- frontend/ui/geometry.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/ui/geometry.lua b/frontend/ui/geometry.lua index a20227d48..708186bad 100644 --- a/frontend/ui/geometry.lua +++ b/frontend/ui/geometry.lua @@ -117,7 +117,8 @@ returns a rectangle for the part that we and a given rectangle share TODO: what happens if there is no rectangle shared? currently behaviour is undefined. ]]-- function Geom:intersect(rect_b) - local intersected = Geom:new(self) + -- make a copy of self + local intersected = self:copy() if self.x < rect_b.x then intersected.x = rect_b.x end @@ -259,6 +260,11 @@ function Geom:offsetWithin(rect_b, dx, dy) end end +function Geom:shrinkInside(rect_b, dx, dy) + self:offsetBy(dx, dy) + return self:intersect(rect_b) +end + --[[ return the Euclidean distance between two geoms ]]--