diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 6dafc7fef..8725bd803 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -916,7 +916,7 @@ class ReaderActivity : BaseActivity() { ) % 2 != 0 } viewModel.state.value.viewerChapters?.let { - viewer.setChaptersDoubleShift(it) + viewer.setChaptersInternal(it) } } @@ -932,7 +932,7 @@ class ReaderActivity : BaseActivity() { config.shiftDoublePage = !config.shiftDoublePage viewModel.state.value.viewerChapters?.let { viewer.updateShifting() - viewer.setChaptersDoubleShift(it) + viewer.setChaptersInternal(it) invalidateOptionsMenu() } } 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 725575b5d..58007c647 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 @@ -84,7 +84,7 @@ abstract class PagerViewer( field = value if (value) { awaitingIdleViewerChapters?.let { viewerChapters -> - setChaptersDoubleShift(viewerChapters) + setChaptersInternal(viewerChapters) awaitingIdleViewerChapters = null if (viewerChapters.currChapter.pages?.size == 1) { adapter.nextTransition?.to?.let(activity::requestPreloadChapter) @@ -288,7 +288,7 @@ abstract class PagerViewer( */ override fun setChapters(chapters: ViewerChapters) { if (isIdle) { - setChaptersDoubleShift(chapters) + setChaptersInternal(chapters) } else { awaitingIdleViewerChapters = chapters } @@ -297,13 +297,14 @@ abstract class PagerViewer( /** * Sets the active [chapters] on this pager. */ - private fun setChaptersInternal(chapters: ViewerChapters) { + internal fun setChaptersInternal(chapters: ViewerChapters) { // Remove listener so the change in item doesn't trigger it + // 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) - val forceTransition = - config.alwaysShowChapterTransition || - adapter.joinedItems.getOrNull(pager.currentItem)?.first is ChapterTransition + val forceTransition = config.alwaysShowChapterTransition || + adapter.joinedItems.getOrNull(pager.currentItem)?.first is ChapterTransition adapter.setChapters(chapters, forceTransition) // Layout the pager once a chapter is being set @@ -315,6 +316,7 @@ abstract class PagerViewer( } pager.addOnPageChangeListener(pagerListener) + // Since we removed the listener while shifting, // Manually call onPageChange to update the UI onPageChange(pager.currentItem) } @@ -500,16 +502,6 @@ abstract class PagerViewer( } // SY --> - 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) - setChaptersInternal(chapters) - pager.addOnPageChangeListener(pagerListener) - // Since we removed the listener while shifting, call page change to update the ui - onPageChange(pager.currentItem) - } - fun updateShifting(page: ReaderPage? = null) { adapter.pageToShift = page ?: adapter.joinedItems.getOrNull(pager.currentItem)?.first as? ReaderPage }