diff --git a/frontend/apps/reader/modules/readerbookmark.lua b/frontend/apps/reader/modules/readerbookmark.lua index abbe4df56..dbca4d33d 100644 --- a/frontend/apps/reader/modules/readerbookmark.lua +++ b/frontend/apps/reader/modules/readerbookmark.lua @@ -241,6 +241,7 @@ function ReaderBookmark:onShowBookmark() -- buid up menu widget method as closure local bookmark = self function bm_menu:onMenuChoice(item) + bookmark.ui.link:addCurrentLocationToStack() bookmark:gotoBookmark(item.page) end diff --git a/frontend/apps/reader/modules/readerlink.lua b/frontend/apps/reader/modules/readerlink.lua index cfd841d3c..6f57fac35 100644 --- a/frontend/apps/reader/modules/readerlink.lua +++ b/frontend/apps/reader/modules/readerlink.lua @@ -199,6 +199,15 @@ function ReaderLink:onTap(_, ges) end end +--- Remember current location so we can go back to it +function ReaderLink:addCurrentLocationToStack() + if self.ui.document.info.has_pages then + table.insert(self.location_stack, self.ui.paging:getBookLocation()) + else + table.insert(self.location_stack, self.ui.rolling:getBookLocation()) + end +end + --- Goes to link. function ReaderLink:onGotoLink(link) logger.dbg("onGotoLink:", link) @@ -206,7 +215,7 @@ function ReaderLink:onGotoLink(link) -- internal pdf links have a "page" attribute, while external ones have an "uri" attribute if link.page then -- Internal link logger.dbg("Internal link:", link) - table.insert(self.location_stack, self.ui.paging:getBookLocation()) + self:addCurrentLocationToStack() self.ui:handleEvent(Event:new("GotoPage", link.page + 1)) return true end @@ -220,7 +229,7 @@ function ReaderLink:onGotoLink(link) -- which accepts both of the above legitimate xpointer as input. if self.ui.document:isXPointerInDocument(link) then logger.dbg("Internal link:", link) - table.insert(self.location_stack, self.ui.rolling:getBookLocation()) + self:addCurrentLocationToStack() self.ui:handleEvent(Event:new("GotoXPointer", link)) return true end diff --git a/frontend/apps/reader/modules/readertoc.lua b/frontend/apps/reader/modules/readertoc.lua index dc6c6baf3..f5c3ffac4 100644 --- a/frontend/apps/reader/modules/readertoc.lua +++ b/frontend/apps/reader/modules/readertoc.lua @@ -345,6 +345,7 @@ function ReaderToc:onShowToc() item.state.callback() else toc_menu:close_callback() + self.ui.link:addCurrentLocationToStack() self.ui:handleEvent(Event:new("GotoPage", item.page)) end end