From 77a491965625bc30ee084dc95f8c2f287abb8950 Mon Sep 17 00:00:00 2001 From: perokhe <81130286+perokhe@users.noreply.github.com> Date: Thu, 27 Mar 2025 08:25:25 -0600 Subject: [PATCH] Fix next chapter button occasionally jumping to the last page of the current chapter (#1920) (cherry picked from commit 941dde341eb11703eadae543f351c9284617541c) # Conflicts: # CHANGELOG.md # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt --- .../ui/reader/viewer/pager/PagerViewer.kt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 0d95f4c17..94628f64b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -105,11 +105,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer { pager.offscreenPageLimit = 1 pager.id = R.id.reader_pager pager.adapter = adapter - pager.addOnPageChangeListener( - // SY --> - pagerListener, - // SY <-- - ) + pager.addOnPageChangeListener(pagerListener) pager.tapListener = { event -> val viewPosition = IntArray(2) pager.getLocationOnScreen(viewPosition) @@ -291,6 +287,9 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer { * Sets the active [chapters] on this pager. */ private fun setChaptersInternal(chapters: ViewerChapters) { + // Remove listener so the change in item doesn't trigger it + pager.removeOnPageChangeListener(pagerListener) + val forceTransition = config.alwaysShowChapterTransition || adapter.joinedItems.getOrNull(pager.currentItem)?.first is ChapterTransition @@ -303,6 +302,8 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer { moveToPage(pages[min(chapters.currChapter.requestedPage, pages.lastIndex)]) pager.isVisible = true } + + pager.addOnPageChangeListener(pagerListener) } /** @@ -475,9 +476,9 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer { fun setChaptersDoubleShift(chapters: ViewerChapters) { // Remove Listener since we're about to change the size of the items // If we don't the size change could put us on a new chapter - pager.removeOnPageChangeListener(pagerListener) + // pager.removeOnPageChangeListener(pagerListener) setChaptersInternal(chapters) - pager.addOnPageChangeListener(pagerListener) + // pager.addOnPageChangeListener(pagerListener) // Since we removed the listener while shifting, call page change to update the ui onPageChange(pager.currentItem) }