From 93857287699b7660f940580b1d2cc3994d526898 Mon Sep 17 00:00:00 2001 From: poire-z Date: Thu, 25 Jun 2020 21:19:50 +0200 Subject: [PATCH] Bookmarks prev/next via gestures: add location to stack (#6306) Was correctly done when jumping bookmarks via the Bookmarks menu and the SkimTo widget, but not from gestures. Also prevent fillToc() on each page turn when book has no TOC. --- frontend/apps/reader/modules/readerbookmark.lua | 10 ++++++++-- frontend/apps/reader/modules/readertoc.lua | 2 +- frontend/apps/reader/skimtowidget.lua | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/apps/reader/modules/readerbookmark.lua b/frontend/apps/reader/modules/readerbookmark.lua index ad4dbff28..b4aab454e 100644 --- a/frontend/apps/reader/modules/readerbookmark.lua +++ b/frontend/apps/reader/modules/readerbookmark.lua @@ -647,12 +647,18 @@ function ReaderBookmark:onGotoNextBookmark(pn_or_xp) return true end -function ReaderBookmark:onGotoNextBookmarkFromPage() +function ReaderBookmark:onGotoNextBookmarkFromPage(add_current_location_to_stack) + if add_current_location_to_stack ~= false then -- nil or true + self.ui.link:addCurrentLocationToStack() + end self:gotoBookmark(self:getNextBookmarkedPageFromPage(self.ui:getCurrentPage())) return true end -function ReaderBookmark:onGotoPreviousBookmarkFromPage() +function ReaderBookmark:onGotoPreviousBookmarkFromPage(add_current_location_to_stack) + if add_current_location_to_stack ~= false then -- nil or true + self.ui.link:addCurrentLocationToStack() + end self:gotoBookmark(self:getPreviousBookmarkedPageFromPage(self.ui:getCurrentPage())) return true end diff --git a/frontend/apps/reader/modules/readertoc.lua b/frontend/apps/reader/modules/readertoc.lua index eb55afee7..33e191dc0 100644 --- a/frontend/apps/reader/modules/readertoc.lua +++ b/frontend/apps/reader/modules/readertoc.lua @@ -79,7 +79,7 @@ function ReaderToc:onPosUpdate(pos, pageno) end function ReaderToc:fillToc() - if self.toc and #self.toc > 0 then return end + if self.toc then return end if self.ui.document:canHaveAlternativeToc() then if self.ui.doc_settings:readSetting("alternative_toc") then -- (if the document has a cache, the previously built alternative diff --git a/frontend/apps/reader/skimtowidget.lua b/frontend/apps/reader/skimtowidget.lua index d05b2a8c1..7a926ee35 100644 --- a/frontend/apps/reader/skimtowidget.lua +++ b/frontend/apps/reader/skimtowidget.lua @@ -412,7 +412,8 @@ end function SkimToWidget:goToByEvent(event_name) if event_name then self:addOriginToLocationStack() - self.ui:handleEvent(Event:new(event_name)) + self.ui:handleEvent(Event:new(event_name, false)) + -- add_current_location_to_stack=false, as we handled it here self.curr_page = self.ui:getCurrentPage() self:update() end