From 1231dd149657dc9904ade2e5c0937ba13deccfa4 Mon Sep 17 00:00:00 2001 From: Gauthier Date: Fri, 18 Feb 2022 11:09:03 +0800 Subject: [PATCH] Fix "Landscape zoom" and "Navigate to pan" for split images (#6647) * fix: getPageHolder would always return the first split, as they share the same index * split pages have the same number, we need an extra check to know whether we move forward or back (cherry picked from commit 2f07f226b8182699884262ac67139454d5b7070d) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt --- .../ui/reader/viewer/pager/PagerViewer.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 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 513798f5b..945978463 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 @@ -171,18 +171,27 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { private fun getPageHolder(page: ReaderPage): PagerPageHolder? = pager.children .filterIsInstance(PagerPageHolder::class.java) - .firstOrNull { it.item.first.index == page.index || it.item.second?.index == page.index } + .firstOrNull { it.item.first == page || it.item.second == page } /** * Called when a new page (either a [ReaderPage] or [ChapterTransition]) is marked as active */ + @Suppress("NAME_SHADOWING") fun onPageChange(position: Int) { val page = adapter.joinedItems.getOrNull(position) if (page != null && currentPage != page) { val allowPreload = checkAllowPreload(page.first as? ReaderPage) val forward = when { - currentPage is ReaderPage && page.first is ReaderPage -> - (page.first as ReaderPage).number > (currentPage as ReaderPage).number + currentPage is ReaderPage && page.first is ReaderPage -> { + // if both pages have the same number, it's a split page with an InsertPage + val page = page.first as ReaderPage + if (page.number == (currentPage as ReaderPage).number) { + // the InsertPage is always the second in the reading direction + page is InsertPage + } else { + page.number > (currentPage as ReaderPage).number + } + } currentPage is ChapterTransition.Prev && page.first is ReaderPage -> false else -> true