diff --git a/base b/base index f549ca892..26de9bf5e 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit f549ca8922f92a70986082a1d2023de3e7cd9a68 +Subproject commit 26de9bf5e19511a82f55e750515e567bac15456b diff --git a/frontend/apps/reader/modules/readerhighlight.lua b/frontend/apps/reader/modules/readerhighlight.lua index 834d401b1..d216e891b 100644 --- a/frontend/apps/reader/modules/readerhighlight.lua +++ b/frontend/apps/reader/modules/readerhighlight.lua @@ -207,22 +207,22 @@ function ReaderHighlight:onTapXPointerSavedHighlight(ges) -- showing menu...). We might want to cache these boxes per page (and -- clear that cache when page layout change or highlights are added -- or removed). - local cur_page, cur_scroll_top, cur_scroll_bottom + local cur_page, cur_page2, cur_scroll_top, cur_scroll_bottom local pos = self.view:screenToPageTransform(ges.pos) for page, _ in pairs(self.view.highlight.saved) do local items = self.view.highlight.saved[page] if items then for i = 1, #items do - if not cur_page then - cur_page = self.ui.document:getPageFromXPointer(self.ui.document:getXPointer()) - end local pos0, pos1 = items[i].pos0, items[i].pos1 -- document:getScreenBoxesFromPositions() is expensive, so we -- first check this item is on current page local is_in_view = false - if self.view_mode == "page" then + if self.view.view_mode == "page" then if not cur_page then cur_page = self.ui.document:getPageFromXPointer(self.ui.document:getXPointer()) + if self.ui.document:getVisiblePageCount() > 1 then + cur_page2 = cur_page + 1 + end end local page0 = self.ui.document:getPageFromXPointer(pos0) local page1 = self.ui.document:getPageFromXPointer(pos1) @@ -230,6 +230,8 @@ function ReaderHighlight:onTapXPointerSavedHighlight(ges) local end_page = math.max(page0, page1) if start_page <= cur_page and end_page >= cur_page then is_in_view = true + elseif cur_page2 and start_page <= cur_page2 and end_page >= cur_page2 then + is_in_view = true end else if not cur_scroll_top then diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index 9f9a5fa10..a6c9a6b62 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -495,7 +495,7 @@ function ReaderView:drawXPointerSavedHighlight(bb, x, y) -- showing menu...). We might want to cache these boxes per page (and -- clear that cache when page layout change or highlights are added -- or removed). - local cur_page, cur_scroll_top, cur_scroll_bottom + local cur_page, cur_page2, cur_scroll_top, cur_scroll_bottom for page, _ in pairs(self.highlight.saved) do local items = self.highlight.saved[page] if not items then items = {} end @@ -508,6 +508,9 @@ function ReaderView:drawXPointerSavedHighlight(bb, x, y) if self.view_mode == "page" then if not cur_page then cur_page = self.ui.document:getPageFromXPointer(self.ui.document:getXPointer()) + if self.ui.document:getVisiblePageCount() > 1 then + cur_page2 = cur_page + 1 + end end local page0 = self.ui.document:getPageFromXPointer(pos0) local page1 = self.ui.document:getPageFromXPointer(pos1) @@ -515,6 +518,8 @@ function ReaderView:drawXPointerSavedHighlight(bb, x, y) local end_page = math.max(page0, page1) if start_page <= cur_page and end_page >= cur_page then is_in_view = true + elseif cur_page2 and start_page <= cur_page2 and end_page >= cur_page2 then + is_in_view = true end else if not cur_scroll_top then