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
This commit is contained in:
perokhe 2025-03-27 08:25:25 -06:00 committed by Jobobby04
parent 84d901b8a3
commit 77a4919656

View File

@ -105,11 +105,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
pager.offscreenPageLimit = 1 pager.offscreenPageLimit = 1
pager.id = R.id.reader_pager pager.id = R.id.reader_pager
pager.adapter = adapter pager.adapter = adapter
pager.addOnPageChangeListener( pager.addOnPageChangeListener(pagerListener)
// SY -->
pagerListener,
// SY <--
)
pager.tapListener = { event -> pager.tapListener = { event ->
val viewPosition = IntArray(2) val viewPosition = IntArray(2)
pager.getLocationOnScreen(viewPosition) pager.getLocationOnScreen(viewPosition)
@ -291,6 +287,9 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
* Sets the active [chapters] on this pager. * Sets the active [chapters] on this pager.
*/ */
private fun setChaptersInternal(chapters: ViewerChapters) { private fun setChaptersInternal(chapters: ViewerChapters) {
// Remove listener so the change in item doesn't trigger it
pager.removeOnPageChangeListener(pagerListener)
val forceTransition = val forceTransition =
config.alwaysShowChapterTransition || config.alwaysShowChapterTransition ||
adapter.joinedItems.getOrNull(pager.currentItem)?.first is ChapterTransition 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)]) moveToPage(pages[min(chapters.currChapter.requestedPage, pages.lastIndex)])
pager.isVisible = true pager.isVisible = true
} }
pager.addOnPageChangeListener(pagerListener)
} }
/** /**
@ -475,9 +476,9 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
fun setChaptersDoubleShift(chapters: ViewerChapters) { fun setChaptersDoubleShift(chapters: ViewerChapters) {
// Remove Listener since we're about to change the size of the items // 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 // If we don't the size change could put us on a new chapter
pager.removeOnPageChangeListener(pagerListener) // pager.removeOnPageChangeListener(pagerListener)
setChaptersInternal(chapters) setChaptersInternal(chapters)
pager.addOnPageChangeListener(pagerListener) // pager.addOnPageChangeListener(pagerListener)
// Since we removed the listener while shifting, call page change to update the ui // Since we removed the listener while shifting, call page change to update the ui
onPageChange(pager.currentItem) onPageChange(pager.currentItem)
} }