From 8423b48fb95ddf29b1d11d3d4f5425e98171e86b Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 14 Oct 2025 13:47:21 +0300 Subject: [PATCH] Revert "Fix page position loss when switching reader modes" This reverts commit 5f879f6c833f196e3f2b01e8bd96850d7ea4ce48. --- .../reader/ui/pager/BaseReaderFragment.kt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/BaseReaderFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/BaseReaderFragment.kt index 7b296129c..c1acaeda0 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/BaseReaderFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/BaseReaderFragment.kt @@ -25,16 +25,18 @@ abstract class BaseReaderFragment : BaseFragment(), ZoomCont readerAdapter = onCreateAdapter() viewModel.content.observe(viewLifecycleOwner) { - // Determine which state to use for restoring position: - // - content.state: explicitly set state (e.g., after mode switch or chapter change) - // - getCurrentState(): current reading position saved in SavedStateHandle + // Use getCurrentState() to handle configuration changes (e.g., screen rotation) properly. + // getCurrentState() always has the most recent reading position, while content.state + // may contain the initial state from when content was first loaded. val currentState = viewModel.getCurrentState() - val pendingState = when { - it.state == null && it.pages.isNotEmpty() && readerAdapter?.hasItems != true -> currentState - readerAdapter?.hasItems != true && it.state != currentState && currentState != null -> currentState - else -> it.state + if (it.state == null && it.pages.isNotEmpty() && readerAdapter?.hasItems != true) { + onPagesChanged(it.pages, currentState) + } else if (currentState != null) { + // If we have a current state, use it instead of content.state + onPagesChanged(it.pages, currentState) + } else { + onPagesChanged(it.pages, it.state) } - onPagesChanged(it.pages, pendingState) } }