diff --git a/frontend/apps/reader/modules/readergoto.lua b/frontend/apps/reader/modules/readergoto.lua index a66ab269f..5ec541160 100644 --- a/frontend/apps/reader/modules/readergoto.lua +++ b/frontend/apps/reader/modules/readergoto.lua @@ -31,7 +31,7 @@ function ReaderGoto:onShowGotoDialog() title = self.goto_dialog_title, input_hint = "(1 - "..self.document:getPageCount()..")", buttons = { - { + { { text = _("Cancel"), enabled = true, @@ -50,15 +50,13 @@ function ReaderGoto:onShowGotoDialog() text = _("Location"), enabled = not self.document.info.has_pages, callback = function() - self:gotoLocation() + self:gotoPage() end, }, }, }, input_type = "number", - enter_callback = self.document.info.has_pages - and function() self:gotoPage() end - or function() self:gotoLocation() end, + enter_callback = function() self:gotoPage() end, width = Screen:getWidth() * 0.8, height = Screen:getHeight() * 0.2, } @@ -72,21 +70,17 @@ function ReaderGoto:close() end function ReaderGoto:gotoPage() - local number = tonumber(self.goto_dialog:getInputText()) - if number then - self.ui:handleEvent(Event:new("GotoPage", number)) - end - self:close() - return true -end - -function ReaderGoto:gotoLocation() - local number = tonumber(self.goto_dialog:getInputText()) + local page_number = self.goto_dialog:getInputText() + local relative_sign = page_number:sub(1, 1) + local number = tonumber(page_number) if number then - self.ui:handleEvent(Event:new("GotoPage", number)) + if relative_sign == "+" or relative_sign == "-" then + self.ui:handleEvent(Event:new("GotoRelativePage", number)) + else + self.ui:handleEvent(Event:new("GotoPage", number)) + end + self:close() end - self:close() - return true end return ReaderGoto diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 907c8112d..dc3a78e52 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -799,6 +799,11 @@ function ReaderPaging:onGotoPage(number) return true end +function ReaderPaging:onGotoRelativePage(number) + self:gotoPage(self.current_page + number) + return true +end + function ReaderPaging:onGotoPercentage(percentage) if percentage < 0 then percentage = 0 end if percentage > 1 then percentage = 1 end diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 2619f8214..6522b2910 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -331,6 +331,14 @@ function ReaderRolling:onGotoPage(number) return true end +function ReaderRolling:onGotoRelativePage(number) + if number then + self:gotoPage(self.current_page + number) + end + self.xpointer = self.ui.document:getXPointer() + return true +end + function ReaderRolling:onGotoXPointer(xp) self:gotoXPointer(xp) self.xpointer = xp