From ef3b96f22602fd1fe7ec861eee6bafa0dfea8b68 Mon Sep 17 00:00:00 2001 From: hius07 <62179190+hius07@users.noreply.github.com> Date: Mon, 21 Jul 2025 08:57:25 +0300 Subject: [PATCH] readerrolling: fix _gotoPos --- frontend/apps/reader/modules/readerrolling.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 5084dec11..099a4b2e1 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -1123,11 +1123,19 @@ end --]] function ReaderRolling:_gotoPos(new_pos, do_dim_area) if new_pos == self.current_pos then return end - if new_pos < 0 then new_pos = 0 end - -- Don't go past end of document, and ensure last line of the document - -- is shown just above the footer, whether footer is visible or not - local max_pos = self.ui.document.info.doc_height - self.ui.dimen.h + self.view.footer:getHeight() - if new_pos > max_pos then new_pos = max_pos end + if new_pos < 0 then + new_pos = 0 + else + local max_pos = self.ui.document.info.doc_height - self.ui.dimen.h + self.view.footer:getHeight() + if max_pos < 0 then -- single-page document + new_pos = 0 + elseif new_pos > max_pos then + -- Don't go past end of document, and ensure last line of the document + -- is shown just above the footer, whether footer is visible or not + new_pos = max_pos + end + end +-- if max_pos > 0 and new_pos > max_pos then new_pos = max_pos end -- adjust dim_area according to new_pos if self.view.view_mode ~= "page" and self.view.page_overlap_enable and do_dim_area then local footer_height = ((self.view.footer_visible and not self.view.footer.settings.reclaim_height) and 1 or 0) * self.view.footer:getHeight()