Fix switching double-page mode

This commit is contained in:
Koitharu
2024-08-20 15:39:17 +03:00
parent 0d39909d89
commit 0f28d5de11
4 changed files with 12 additions and 7 deletions

View File

@@ -16,8 +16,8 @@ android {
applicationId 'org.koitharu.kotatsu' applicationId 'org.koitharu.kotatsu'
minSdk = 21 minSdk = 21
targetSdk = 35 targetSdk = 35
versionCode = 661 versionCode = 662
versionName = '7.5-a1' versionName = '7.5-a2'
generatedDensities = [] generatedDensities = []
testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner' testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner'
ksp { ksp {

View File

@@ -19,6 +19,10 @@ class PagerLifecycleDispatcher(
setResumedPage(pager.currentItem) setResumedPage(pager.currentItem)
} }
fun postInvalidate() = pager.post {
invalidate()
}
private fun setResumedPage(position: Int) { private fun setResumedPage(position: Int) {
pendingUpdate?.cancel() pendingUpdate?.cancel()
pendingUpdate = null pendingUpdate = null

View File

@@ -47,11 +47,12 @@ class ReaderManager(
} }
fun setDoubleReaderMode(isEnabled: Boolean) { fun setDoubleReaderMode(isEnabled: Boolean) {
val prevMode = currentMode val mode = currentMode
val prevReader = currentReader?.javaClass
invalidateTypesMap(isEnabled && isLandscape()) invalidateTypesMap(isEnabled && isLandscape())
val newMode = currentMode ?: return val newReader = modeMap[mode]
if (newMode != prevMode) { if (mode != null && newReader != prevReader) {
replace(newMode) replace(mode)
} }
} }

View File

@@ -120,7 +120,7 @@ abstract class BasePagerReaderFragment : BaseReaderFragment<FragmentReaderPagerB
val items = launch { val items = launch {
requireAdapter().setItems(pages) requireAdapter().setItems(pages)
yield() yield()
pagerLifecycleDispatcher?.invalidate() pagerLifecycleDispatcher?.postInvalidate()
} }
if (pendingState != null) { if (pendingState != null) {
val position = pages.indexOfFirst { val position = pages.indexOfFirst {