Fix switching double-page mode
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user