diff --git a/libraryVersion.properties b/libraryVersion.properties index 7de0a07b..41d027b5 100755 --- a/libraryVersion.properties +++ b/libraryVersion.properties @@ -6,7 +6,7 @@ view_version=1.2.0 material_version=1.0.4 functions_version=1.0.0 savedstate_version=1.0.1 -navigation_version=1.2.3 +navigation_version=1.2.4 recyclerview_version=1.2.0 viewpager2_version=1.0.0 communications_version=1.0.0 diff --git a/navigation/src/androidTest/java/com/tunjid/androidx/navigation/MultiStackNavigatorTest.kt b/navigation/src/androidTest/java/com/tunjid/androidx/navigation/MultiStackNavigatorTest.kt index 406192fc..568ec6c2 100644 --- a/navigation/src/androidTest/java/com/tunjid/androidx/navigation/MultiStackNavigatorTest.kt +++ b/navigation/src/androidTest/java/com/tunjid/androidx/navigation/MultiStackNavigatorTest.kt @@ -337,6 +337,16 @@ class MultiStackNavigatorTest { assertSame(ROOT_TAG_0, multiStackNavigator.current?.tag) } + @Test + fun clearAllShowsInitialIndex() = runBlocking { + val multiStackNavigator = multiStackNavigator(MultiStackNavigator.BackStackType.UniqueEntries, initialIndex = 1) + multiStackNavigator.performConsecutively(this) { + push(NavigationTestFragment.newInstance(TAG_A)) + clearAll() + assertSame(ROOT_TAG_1, multiStackNavigator.current?.tag) + } + } + private fun MultiStackNavigator.assertNavigatorIndices(vararg tags: String?) { tags.forEachIndexed { index, tag -> assertEquals(tag, navigatorAt(index)?.current?.tag) } } diff --git a/navigation/src/main/java/com/tunjid/androidx/navigation/MultiStackNavigator.kt b/navigation/src/main/java/com/tunjid/androidx/navigation/MultiStackNavigator.kt index f66adbb5..1e40309c 100644 --- a/navigation/src/main/java/com/tunjid/androidx/navigation/MultiStackNavigator.kt +++ b/navigation/src/main/java/com/tunjid/androidx/navigation/MultiStackNavigator.kt @@ -70,7 +70,7 @@ fun FragmentActivity.multiStackNavigationController( class MultiStackNavigator( stackCount: Int, stateContainer: LifecycleSavedStateContainer, - private val initialIndex: Int, + internal val initialIndex: Int, private val fragmentManager: FragmentManager, @IdRes override val containerId: Int, backStackType: BackStackType = BackStackType.UniqueEntries, diff --git a/navigation/src/main/java/com/tunjid/androidx/navigation/SuspendingMultiStackNavigator.kt b/navigation/src/main/java/com/tunjid/androidx/navigation/SuspendingMultiStackNavigator.kt index 6ced5812..b0b1069f 100644 --- a/navigation/src/main/java/com/tunjid/androidx/navigation/SuspendingMultiStackNavigator.kt +++ b/navigation/src/main/java/com/tunjid/androidx/navigation/SuspendingMultiStackNavigator.kt @@ -35,7 +35,7 @@ class SuspendingMultiStackNavigator internal constructor( mainThreadSuspendCancellableCoroutine { continuation -> navigator.reset(commitNow = false) { continuation.resumeIfActive(Unit) } } - navigator.stackFragments[0].waitForChild() + navigator.stackFragments[navigator.initialIndex].waitForChild() } private suspend fun StackFragment.waitForChild(): Fragment {