Menu widget: optimize _recalculateDimen() calls

reviewable/pr11825/r1
hius07 3 weeks ago committed by GitHub
parent a09e819b86
commit 6019f4a625
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -626,8 +626,14 @@ local Menu = FocusManager:extend{
line_color = Blitbuffer.COLOR_DARK_GRAY,
}
function Menu:_recalculateDimen()
self.perpage = self.items_per_page or G_reader_settings:readSetting("items_per_page") or self.items_per_page_default
function Menu:_recalculateDimen(no_recalculate_dimen)
local perpage = self.items_per_page or G_reader_settings:readSetting("items_per_page") or self.items_per_page_default
if self.perpage ~= perpage then
self.perpage = perpage
no_recalculate_dimen = false
end
if no_recalculate_dimen then return end
local top_height = 0
if self.title_bar and not self.no_title then
@ -645,7 +651,7 @@ function Menu:_recalculateDimen()
self.item_dimen = Geom:new{
x = 0, y = 0,
w = self.inner_dimen.w,
h = math.floor(self.available_height / self.perpage),
h = math.floor(self.available_height / perpage),
}
self.page_num = self:getPageNumber(#self.item_table)
@ -1021,9 +1027,7 @@ function Menu:updateItems(select_number, no_recalculate_dimen)
self.page_info:resetLayout()
self.return_button:resetLayout()
self.content_group:resetLayout()
if not no_recalculate_dimen then
self:_recalculateDimen()
end
self:_recalculateDimen(no_recalculate_dimen)
-- default to select the first item
if not select_number then
select_number = 1
@ -1127,15 +1131,21 @@ end
which item.key = value
--]]
function Menu:switchItemTable(new_title, new_item_table, itemnumber, itemmatch, new_subtitle)
local no_recalculate_dimen = true
if new_item_table then
self.item_table = new_item_table
no_recalculate_dimen = false
end
if self.title_bar then
if new_title then
self.title_bar:setTitle(new_title, true)
if self.title_multilines then
no_recalculate_dimen = false
end
end
if new_subtitle then
if new_subtitle then -- always single line
self.title_bar:setSubTitle(new_subtitle, true)
end
end
@ -1156,7 +1166,7 @@ function Menu:switchItemTable(new_title, new_item_table, itemnumber, itemmatch,
self.page = self:getPageNumber(itemnumber)
end
self:updateItems()
self:updateItems(1, no_recalculate_dimen)
end
function Menu:getPageNumber(item_number)

Loading…
Cancel
Save