From 557ceb7a4bf9dc4ab158feea7205c0750cb84d7c Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 13 Mar 2013 11:18:29 +0800 Subject: [PATCH] add vertical_align to UnderlineContainer --- frontend/ui/widget/container.lua | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/frontend/ui/widget/container.lua b/frontend/ui/widget/container.lua index a54bebe1a..32b7d6b0c 100644 --- a/frontend/ui/widget/container.lua +++ b/frontend/ui/widget/container.lua @@ -178,25 +178,37 @@ UnderlineContainer = WidgetContainer:new{ linesize = 2, padding = 1, color = 0, + vertical_align = "top", } function UnderlineContainer:getSize() if self.dimen then return { w = self.dimen.w, h = self.dimen.h } else - local contentSize = self[1]:getSize() - return { - w = contentSize.w, - h = contentSize.h + self.linesize + self.padding - } + return self:getContentSize() end end +function UnderlineContainer:getContentSize() + local contentSize = self[1]:getSize() + return { + w = contentSize.w, + h = contentSize.h + self.linesize + self.padding + } +end + function UnderlineContainer:paintTo(bb, x, y) - local content_size = self:getSize() - self[1]:paintTo(bb, x, y) - bb:paintRect(x, y + content_size.h - self.linesize, - content_size.w, self.linesize, self.color) + local container_size = self:getSize() + local content_size = self:getContentSize() + local p_y = y + if self.vertical_align == "center" then + p_y = (container_size.h - content_size.h) / 2 + y + elseif self.vertical_align == "bottom" then + p_y = (container_size.h - content_size.h) + y + end + self[1]:paintTo(bb, x, p_y) + bb:paintRect(x, y + container_size.h - self.linesize, + container_size.w, self.linesize, self.color) end