Add all pages of adjacent chapters in the UI instead of only the first or last three (mihonapp/mihon#2995)

(cherry picked from commit 0cc724108b4f29a3d1d33ac4666a14873460a657)
This commit is contained in:
AntsyLich 2026-02-25 18:28:53 +06:00 committed by Cuong-Tran
parent 7c5fe16b52
commit 1c9c35156d
3 changed files with 6 additions and 33 deletions

View file

@ -30,6 +30,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co
### Changed
- Update tracker icons ([@AntsyLich](https://github.com/AntsyLich)) ([#2773](https://github.com/mihonapp/mihon/pull/2773))
- Add a small increment to chapter number before comparison to fix progress sync issues for Suwayomi ([@cpiber](https://github.com/cpiber)) ([#2657](https://github.com/mihonapp/mihon/pull/2675))
- Add all pages of adjacent chapters in the UI instead of only the first or last three ([@AntsyLich](https://github.com/AntsyLich)) ([#2995](https://github.com/mihonapp/mihon/pull/2995))
### Fixed
- Fix reader tap zones triggering after scrolling is stopped by tapping ([@NGB-Was-Taken](https://github.com/NGB-Was-Taken)) ([#2680](https://github.com/mihonapp/mihon/pull/2680))

View file

@ -74,15 +74,8 @@ class PagerViewerAdapter(
val prevHasMissingChapters = calculateChapterGap(chapters.currChapter, chapters.prevChapter) > 0
val nextHasMissingChapters = calculateChapterGap(chapters.nextChapter, chapters.currChapter) > 0
// Add previous chapter pages and transition.
if (chapters.prevChapter != null) {
// We only need to add the last few pages of the previous chapter, because it'll be
// selected as the current chapter when one of those pages is selected.
val prevPages = chapters.prevChapter.pages
if (prevPages != null) {
newItems.addAll(prevPages.takeLast(2))
}
}
// Add previous chapter pages and transition
chapters.prevChapter?.pages?.let(newItems::addAll)
// Skip transition page if the chapter is loaded & current page is not a transition page
if (prevHasMissingChapters || forceTransition || chapters.prevChapter?.state !is ReaderChapter.State.Loaded) {
@ -124,14 +117,7 @@ class PagerViewerAdapter(
}
}
if (chapters.nextChapter != null) {
// Add at most two pages, because this chapter will be selected before the user can
// swap more pages.
val nextPages = chapters.nextChapter.pages
if (nextPages != null) {
newItems.addAll(nextPages.take(2))
}
}
chapters.nextChapter?.pages?.let(newItems::addAll)
// Resets double-page splits, else insert pages get misplaced
subItems.filterIsInstance<InsertPage>().also { subItems.removeAll(it) }

View file

@ -49,14 +49,7 @@ class WebtoonAdapter(
val nextHasMissingChapters = calculateChapterGap(chapters.nextChapter, chapters.currChapter) > 0
// Add previous chapter pages and transition.
if (chapters.prevChapter != null) {
// We only need to add the last few pages of the previous chapter, because it'll be
// selected as the current chapter when one of those pages is selected.
val prevPages = chapters.prevChapter.pages
if (prevPages != null) {
newItems.addAll(prevPages.takeLast(2))
}
}
chapters.prevChapter?.pages?.let(newItems::addAll)
// Skip transition page if the chapter is loaded & current page is not a transition page
if (prevHasMissingChapters || forceTransition || chapters.prevChapter?.state !is ReaderChapter.State.Loaded) {
@ -76,14 +69,7 @@ class WebtoonAdapter(
newItems.add(ChapterTransition.Next(chapters.currChapter, chapters.nextChapter))
}
if (chapters.nextChapter != null) {
// Add at most two pages, because this chapter will be selected before the user can
// swap more pages.
val nextPages = chapters.nextChapter.pages
if (nextPages != null) {
newItems.addAll(nextPages.take(2))
}
}
chapters.nextChapter?.pages?.let(newItems::addAll)
updateItems(newItems)
}