From a34e04203512c422ebba617c9430527b072b75ef Mon Sep 17 00:00:00 2001 From: Adetunji Dahunsi Date: Sun, 9 Feb 2025 08:45:01 -0500 Subject: [PATCH] Hold reference to scope in AppState --- libraryVersion.properties | 6 +++--- .../com/tunjid/demo/common/ui/DemoApp.kt | 20 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libraryVersion.properties b/libraryVersion.properties index 5522978..c8f4ed1 100644 --- a/libraryVersion.properties +++ b/libraryVersion.properties @@ -14,6 +14,6 @@ # limitations under the License. # groupId=com.tunjid.treenav -treenav_version=0.0.13a -strings_version=0.0.13a -compose_version=0.0.13a \ No newline at end of file +treenav_version=0.0.14 +strings_version=0.0.14 +compose_version=0.0.14 \ No newline at end of file diff --git a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt index fde1912..a0659aa 100644 --- a/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt +++ b/sample/common/src/commonMain/kotlin/com/tunjid/demo/common/ui/DemoApp.kt @@ -171,10 +171,8 @@ fun App( } }, ) { - val filteredPaneOrder by remember { - derivedStateOf { appState.filteredPaneOrder(this) } - } - appState.splitLayoutState.visibleCount = filteredPaneOrder.size + appState.panedNavHostScope = this + appState.splitLayoutState.visibleCount = appState.filteredPaneOrder.size SplitLayout( state = appState.splitLayoutState, modifier = Modifier @@ -190,7 +188,7 @@ fun App( ) }, itemContent = { index -> - val pane = filteredPaneOrder[index] + val pane = appState.filteredPaneOrder[index] Destination(pane) if (pane == ThreePane.Primary) Destination(ThreePane.TransientPrimary) } @@ -275,6 +273,7 @@ class AppState( ) private val paneInteractionSourceList = mutableStateListOf() private val paneRenderOrder = listOf( + ThreePane.Tertiary, ThreePane.Secondary, ThreePane.Primary, ) @@ -294,11 +293,12 @@ class AppState( internal val isPreviewingBack get() = !backPreviewState.progress.isNaN() - fun filteredPaneOrder( - panedNavHostScope: PanedNavHostScope - ): List { - val order = paneRenderOrder.filter { panedNavHostScope.nodeFor(it) != null } - return order + internal var panedNavHostScope by mutableStateOf?>( + null + ) + + val filteredPaneOrder: List by derivedStateOf { + paneRenderOrder.filter { panedNavHostScope?.nodeFor(it) != null } } fun setTab(destination: SampleDestination.NavTabs) {