From 5fc4adafc4f022f0576867cde08a5eff3ca0cb9d Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 11 Dec 2012 01:59:24 +0800 Subject: [PATCH] fill menu with dummy blank widget to extend its height --- frontend/ui/menu.lua | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/frontend/ui/menu.lua b/frontend/ui/menu.lua index 9d4c0dcaa..de9536682 100644 --- a/frontend/ui/menu.lua +++ b/frontend/ui/menu.lua @@ -204,6 +204,10 @@ Menu = FocusManager:new{ sface = Font:getFace("scfont", 20), title = "No Title", + -- default width and height + width = 500, + -- height will be calculated according to item number if not given + height = nil, dimen = Geom:new{}, item_table = {}, item_shortcuts = { @@ -229,7 +233,8 @@ Menu = FocusManager:new{ function Menu:_recalculateDimen() self.dimen.w = self.width - self.dimen.h = (#self.item_table + 2) * 36 + -- if height not given, dynamically calculate it + self.dimen.h = self.height or (#self.item_table + 2) * 36 self.item_dimen = Geom:new{ w = self.dimen.w, h = 36, -- hardcoded for now @@ -344,6 +349,7 @@ function Menu:updateItems(select_number) self:_recalculateDimen() for c = 1, self.perpage do + -- calculate index in item_table local i = (self.page - 1) * self.perpage + c if i <= #self.item_table then local item_shortcut = nil @@ -370,7 +376,15 @@ function Menu:updateItems(select_number) menu = self, } table.insert(self.item_group, item_tmp) + -- this is for focus manager table.insert(self.layout, {item_tmp}) + else + -- item not enough to fill the whole page, break out of loop + table.insert(self.item_group, + VerticalSpan:new{ + width = (self.item_dimen.h * (self.perpage - c + 1)) + }) + break end -- if i <= self.items end -- for c=1, self.perpage if self.item_group[1] then