diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index a35568920..5c41b7796 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -284,6 +284,7 @@ function ReaderUI:init() view = self.view, ui = self }) + self.disable_double_tap = G_reader_settings:readSetting("disable_double_tap") ~= false end -- fulltext search self:registerModule("search", ReaderSearch:new{ diff --git a/frontend/ui/elements/common_settings_menu_table.lua b/frontend/ui/elements/common_settings_menu_table.lua index e519ced69..ad9ffcc5a 100644 --- a/frontend/ui/elements/common_settings_menu_table.lua +++ b/frontend/ui/elements/common_settings_menu_table.lua @@ -39,6 +39,7 @@ table.insert(common_settings, { sub_item_table = { require("ui/elements/screen_dpi_menu_table"), require("ui/elements/screen_eink_opt_menu_table"), + require("ui/elements/screen_disable_double_tap_table"), require("ui/elements/refresh_menu_table"), }, }) diff --git a/frontend/ui/elements/screen_disable_double_tap_table.lua b/frontend/ui/elements/screen_disable_double_tap_table.lua new file mode 100644 index 000000000..54dfc5759 --- /dev/null +++ b/frontend/ui/elements/screen_disable_double_tap_table.lua @@ -0,0 +1,17 @@ +local InfoMessage = require("ui/widget/infomessage") +local UIManager = require("ui/uimanager") +local _ = require("gettext") + +return { + text = _("Disable double tap"), + checked_func = function() + return G_reader_settings:readSetting("disable_double_tap") ~= false + end, + callback = function() + disabled = G_reader_settings:readSetting("disable_double_tap") ~= false + G_reader_settings:saveSetting("disable_double_tap", not disabled) + UIManager:show(InfoMessage:new{ + text = _("This will take effect on next restart."), + }) + end, +} diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 87a345cee..379fe5064 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -168,7 +168,9 @@ function UIManager:show(widget, refreshtype, refreshregion, x, y) -- tell the widget that it is shown now widget:handleEvent(Event:new("Show")) -- check if this widget disables double tap gesture - if widget.disable_double_tap then + if widget.disable_double_tap == false then + Input.disable_double_tap = false + else Input.disable_double_tap = true end end @@ -184,6 +186,8 @@ function UIManager:close(widget, refreshtype, refreshregion) local dirty = false -- first send close event to widget widget:handleEvent(Event:new("CloseWidget")) + -- make it enabled by default and check any widget that disable it + Input.disable_double_tap = false -- then remove all reference to that widget on stack and update for i = #self._window_stack, 1, -1 do if self._window_stack[i].widget == widget then