diff --git a/frontend/ui/widget/menu.lua b/frontend/ui/widget/menu.lua index 3ad030a39..16bac7798 100644 --- a/frontend/ui/widget/menu.lua +++ b/frontend/ui/widget/menu.lua @@ -27,6 +27,7 @@ local util = require("ffi/util") local logger = require("logger") local Blitbuffer = require("ffi/blitbuffer") local _ = require("gettext") +local getMenuText = require("util").getMenuText --[[ Widget that displays a shortcut icon for menu item @@ -169,8 +170,7 @@ function MenuItem:init() local state_button_width = self.state_size.w or 0 local my_text = self.text and ""..self.text or "" - local w = RenderText:sizeUtf8Text(0, self.dimen.w, self.face, - ""..my_text, true, self.bold).x + local w = RenderText:sizeUtf8Text(0, self.dimen.w, self.face, my_text, true, self.bold).x if w + mandatory_w + state_button_width >= self.content_width then if Device:hasKeyboard() then self.active_key_events.ShowItemDetail = { @@ -599,7 +599,7 @@ function Menu:init() if self.path_items then self:refreshPath() else - self:updateItems(1) + self:updateItems() end end @@ -650,7 +650,7 @@ function Menu:updateItems(select_number) show_parent = self.show_parent, state = self.item_table[i].state, state_size = self.state_size or {}, - text = self.item_table[i].text, + text = getMenuText(self.item_table[i]), mandatory = self.item_table[i].mandatory, bold = self.item_table.current == i or self.item_table[i].bold == true, face = self.cface, @@ -726,7 +726,7 @@ function Menu:switchItemTable(new_title, new_item_table, itemnumber) end self.item_table = new_item_table - self:updateItems(1) + self:updateItems() end function Menu:onSelectByShortCut(_, keyevent) @@ -802,7 +802,7 @@ function Menu:onNextPage() end if self.page < self.page_num then self.page = self.page + 1 - self:updateItems(1) + self:updateItems() elseif self.page == self.page_num then -- on the last page, we check if we're on the last item local end_position = #self.item_table % self.perpage @@ -813,7 +813,7 @@ function Menu:onNextPage() self:updateItems(end_position) end self.page = 1 - self:updateItems(1) + self:updateItems() end return true end @@ -824,25 +824,25 @@ function Menu:onPrevPage() elseif self.page == 1 then self.page = self.page_num end - self:updateItems(1) + self:updateItems() return true end function Menu:onFirstPage() self.page = 1 - self:updateItems(1) + self:updateItems() return true end function Menu:onLastPage() self.page = self.page_num - self:updateItems(1) + self:updateItems() return true end function Menu:onGotoPage(page) self.page = page - self:updateItems(1) + self:updateItems() return true end diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index 5c2e7eccf..75954749a 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -20,6 +20,7 @@ local Font = require("ui/font") local util = require("ffi/util") local _ = require("gettext") local Blitbuffer = require("ffi/blitbuffer") +local getMenuText = require("util").getMenuText --[[ TouchMenuItem widget @@ -78,7 +79,7 @@ function TouchMenuItem:init() item_checked and checked_widget or unchecked_widget }, TextWidget:new{ - text = self.item.text or self.item.text_func(), + text = getMenuText(self.item), fgcolor = item_enabled ~= false and Blitbuffer.COLOR_BLACK or Blitbuffer.COLOR_GREY, face = self.face, }, diff --git a/frontend/util.lua b/frontend/util.lua index 68377df53..93fa1cec7 100644 --- a/frontend/util.lua +++ b/frontend/util.lua @@ -266,4 +266,17 @@ function util.splitFileNameSuffix(file) return string.gsub(file, "(.*)%.(.*)", "%1"), string.gsub(file, ".*%.", "") end +function util.getMenuText(item) + local text + if item.text_func then + text = item.text_func() + else + text = item.text + end + if item.sub_item_table ~= nil then + text = text .. " \226\150\184" + end + return text +end + return util