Progress on issues #60, #24, #21

This commit is contained in:
Henrique Santiago
2012-08-18 02:04:01 -03:00
parent 0bb991e14e
commit ab7400c51d
11 changed files with 136 additions and 9 deletions

View File

@@ -13,6 +13,63 @@ function UIMiniWindowContainer:getClassName()
return 'UIMiniWindowContainer'
end
function UIMiniWindowContainer:fitAll(noRemoveChild)
if not self:isVisible() then
return
end
local sumHeight = 0
local children = self:getChildren()
for i=1,#children do
sumHeight = sumHeight + children[i]:getHeight()
end
local selfHeight = self:getHeight()
if sumHeight <= selfHeight then
return
end
local removeChildren = {}
-- try to remove no-save widget
for i=#children,1,-1 do
if sumHeight < selfHeight then
break
end
local child = children[i]
if child ~= noRemoveChild and not child.save then
local childHeight = child:getHeight()
sumHeight = sumHeight - childHeight
table.insert(removeChildren, child)
end
end
-- try to remove save widget
for i=#children,1,-1 do
if sumHeight < selfHeight then
break
end
local child = children[i]
if child ~= noRemoveChild then
local childHeight = child:getHeight()
sumHeight = sumHeight - childHeight
table.insert(removeChildren, child)
end
end
-- close widgets
for i=1,#removeChildren do
removeChildren[i]:close()
end
-- dont let noRemoveChild be bigger than self
if noRemoveChild:getHeight() > selfHeight - 20 then
noRemoveChild:setHeight(selfHeight - 20)
end
end
function UIMiniWindowContainer:onDrop(widget, mousePos)
if widget:getClassName() == 'UIMiniWindow' then
local oldParent = widget:getParent()