mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-28 12:07:52 +02:00
Fix next chapter button occasionally jumping to the last page of the current chapter (#1920)
This commit is contained in:
@ -16,6 +16,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co
|
|||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- Fix Bangumi search results including novels ([@MajorTanya](https://github.com/MajorTanya)) ([#1885](https://github.com/mihonapp/mihon/pull/1885))
|
- Fix Bangumi search results including novels ([@MajorTanya](https://github.com/MajorTanya)) ([#1885](https://github.com/mihonapp/mihon/pull/1885))
|
||||||
|
- Fix next chapter button occasionally jumping to the last page of the current chapter ([@perokhe](https://github.com/perokhe)) ([#1920](https://github.com/mihonapp/mihon/pull/1920))
|
||||||
|
|
||||||
## [v0.18.0] - 2025-03-20
|
## [v0.18.0] - 2025-03-20
|
||||||
### Added
|
### Added
|
||||||
|
@ -80,6 +80,19 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val pagerListener = object : ViewPager.SimpleOnPageChangeListener() {
|
||||||
|
override fun onPageSelected(position: Int) {
|
||||||
|
if (!activity.isScrollingThroughPages) {
|
||||||
|
activity.hideMenu()
|
||||||
|
}
|
||||||
|
onPageChange(position)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPageScrollStateChanged(state: Int) {
|
||||||
|
isIdle = state == ViewPager.SCROLL_STATE_IDLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
pager.isVisible = false // Don't layout the pager yet
|
pager.isVisible = false // Don't layout the pager yet
|
||||||
pager.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
|
pager.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
|
||||||
@ -87,20 +100,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)
|
||||||
object : ViewPager.SimpleOnPageChangeListener() {
|
|
||||||
override fun onPageSelected(position: Int) {
|
|
||||||
if (!activity.isScrollingThroughPages) {
|
|
||||||
activity.hideMenu()
|
|
||||||
}
|
|
||||||
onPageChange(position)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageScrollStateChanged(state: Int) {
|
|
||||||
isIdle = state == ViewPager.SCROLL_STATE_IDLE
|
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
pager.tapListener = { event ->
|
pager.tapListener = { event ->
|
||||||
val viewPosition = IntArray(2)
|
val viewPosition = IntArray(2)
|
||||||
pager.getLocationOnScreen(viewPosition)
|
pager.getLocationOnScreen(viewPosition)
|
||||||
@ -275,6 +275,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 = config.alwaysShowChapterTransition ||
|
val forceTransition = config.alwaysShowChapterTransition ||
|
||||||
adapter.items.getOrNull(pager.currentItem) is ChapterTransition
|
adapter.items.getOrNull(pager.currentItem) is ChapterTransition
|
||||||
adapter.setChapters(chapters, forceTransition)
|
adapter.setChapters(chapters, forceTransition)
|
||||||
@ -286,6 +289,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user