mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01: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
 | 
			
		||||
- 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
 | 
			
		||||
### 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 {
 | 
			
		||||
        pager.isVisible = false // Don't layout the pager yet
 | 
			
		||||
        pager.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
 | 
			
		||||
@@ -87,20 +100,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
 | 
			
		||||
        pager.offscreenPageLimit = 1
 | 
			
		||||
        pager.id = R.id.reader_pager
 | 
			
		||||
        pager.adapter = adapter
 | 
			
		||||
        pager.addOnPageChangeListener(
 | 
			
		||||
            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.addOnPageChangeListener(pagerListener)
 | 
			
		||||
        pager.tapListener = { event ->
 | 
			
		||||
            val viewPosition = IntArray(2)
 | 
			
		||||
            pager.getLocationOnScreen(viewPosition)
 | 
			
		||||
@@ -275,6 +275,9 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
 | 
			
		||||
     * Sets the active [chapters] on this pager.
 | 
			
		||||
     */
 | 
			
		||||
    private fun setChaptersInternal(chapters: ViewerChapters) {
 | 
			
		||||
        // Remove listener so the change in item doesn't trigger it
 | 
			
		||||
        pager.removeOnPageChangeListener(pagerListener)
 | 
			
		||||
 | 
			
		||||
        val forceTransition = config.alwaysShowChapterTransition ||
 | 
			
		||||
            adapter.items.getOrNull(pager.currentItem) is ChapterTransition
 | 
			
		||||
        adapter.setChapters(chapters, forceTransition)
 | 
			
		||||
@@ -286,6 +289,8 @@ abstract class PagerViewer(val activity: ReaderActivity) : Viewer {
 | 
			
		||||
            moveToPage(pages[min(chapters.currChapter.requestedPage, pages.lastIndex)])
 | 
			
		||||
            pager.isVisible = true
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pager.addOnPageChangeListener(pagerListener)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user