From dfcd67c5bfa90f5855755eec20b4de02ee1e60dd Mon Sep 17 00:00:00 2001 From: chrox Date: Thu, 30 Oct 2014 15:51:31 +0800 Subject: [PATCH] move screenshot settings to submenu of Screenshot entry in readermenu And also fix a touchmenu bug that prevent some menu entries (always at the bottom of the menu) from showing submenus. The reason is that the onTapSelect method of TouchMenuItem doesn't return true, so that the tap gesture will propagate to the parent widget and be captured by touchmenu itself. But at this time the dimen of touchmenu is changed to the submenu of the tapped menuitem. If the submenu is short enough the tap will be outside of touchmenu which will cause a TapCloseAllMenus event and the submenu will never be shown. --- frontend/apps/reader/modules/readermenu.lua | 47 +++++++++++---------- frontend/ui/widget/touchmenu.lua | 8 ++-- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 8c79c3c90..da688f5bf 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -46,7 +46,6 @@ function ReaderMenu:init() local FileManager = require("apps/filemanager/filemanager") FileManager:restoreScreenMode() if not FileManager.is_running then - UIManager:quit() FileManager:showFiles() end end, @@ -91,8 +90,6 @@ function ReaderMenu:setUpdateItemTable() end -- setting tab - -- FIXME: it's curious that if this 'Screen' menu is placed after the Language - -- menu submenu in 'Screen' won't be shown. Probably a bug in the touchmenu module. table.insert(self.tab_item_table.setting, { text = _("Screen settings"), sub_item_table = { @@ -143,27 +140,33 @@ function ReaderMenu:setUpdateItemTable() end }) - --typeset tab if KOBO_SCREEN_SAVER_LAST_BOOK then - local exclude = self.ui.doc_settings:readSetting("exclude_screensaver") or false + local excluded = function() + return self.ui.doc_settings:readSetting("exclude_screensaver") or false + end + local proportional = function() + return self.ui.doc_settings:readSetting("proportional_screensaver") or false + end table.insert(self.tab_item_table.typeset, { - text = _("Use this book's cover as screensaver"), - checked_func = function() return not (self.ui.doc_settings:readSetting("exclude_screensaver") or false) end, - callback = function() - local exclude = self.ui.doc_settings:readSetting("exclude_screensaver") or false - self.ui.doc_settings:saveSetting("exclude_screensaver", not exclude) - self.ui:saveSettings() - end - }) - local proportional = self.ui.doc_settings:readSetting("proportional_screensaver") or false - table.insert(self.tab_item_table.typeset, { - text = _("Display proportional cover image in screensaver"), - checked_func = function() return (self.ui.doc_settings:readSetting("proportional_screensaver") or false) end, - callback = function() - local proportional = self.ui.doc_settings:readSetting("proportional_screensaver") or false - self.ui.doc_settings:saveSetting("proportional_screensaver", not proportional) - self.ui:saveSettings() - end + text = "Screensaver", + sub_item_table = { + { + text = _("Use this book's cover as screensaver"), + checked_func = function() return not excluded() end, + callback = function() + self.ui.doc_settings:saveSetting("exclude_screensaver", not excluded()) + self.ui:saveSettings() + end + }, + { + text = _("Display proportional cover image in screensaver"), + checked_func = function() return proportional() end, + callback = function() + self.ui.doc_settings:saveSetting("proportional_screensaver", not proportional()) + self.ui:saveSettings() + end + } + } }) end end diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index b0ea0883b..080dcec8b 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -103,6 +103,7 @@ function TouchMenuItem:onTapSelect(arg, ges) UIManager:setDirty(self.show_parent, "partial") end) self.menu:onMenuSelect(self.item) + return true end function TouchMenuItem:onHoldSelect(arg, ges) @@ -119,6 +120,7 @@ function TouchMenuItem:onHoldSelect(arg, ges) UIManager:setDirty(self.show_parent, "partial") end) self.menu:onMenuHold(self.item) + return true end --[[ @@ -331,11 +333,11 @@ function TouchMenu:init() self.device_info = HorizontalGroup:new{ self.time_info, self.net_info, - } - else + } + else self.device_info = HorizontalGroup:new{ self.time_info, - } + } end local footer_width = self.width - self.padding*2 - self.bordersize*2 self.footer = HorizontalGroup:new{