@@ -24,19 +24,22 @@ class CombinedNavigator(
2424 override var screensNavigator: Navigator ? = null
2525 override var tabsNavigator: TabNavigator ? = null
2626
27+ private val isSheetActive: Boolean
28+ get() = sheetNavigator.isSheetActive
29+
2730 override val lastItem: Screen ?
28- get() = if (isVisible) sheetNavigator.lastItemOrNull else screensNavigator?.lastItemOrNull
31+ get() = if (isSheetActive) sheetNavigator.lastItemOrNull else screensNavigator?.lastItemOrNull
32+
33+ override val lastEvent: StackEvent
34+ get() = if (isSheetActive) sheetNavigator.lastEvent else screensNavigator?.lastEvent
35+ ? : StackEvent .Idle
2936
3037 override val lastModalItem: Screen ?
3138 get() = sheetNavigator.lastItemOrNull
3239
3340 override val sheetStackRoot: Screen ?
3441 get() = sheetNavigator.sheetStacks.lastItemOrNull?.first
3542
36- override val lastEvent: StackEvent
37- get() = if (isVisible) sheetNavigator.lastEvent else screensNavigator?.lastEvent
38- ? : StackEvent .Idle
39-
4043 override val isVisible: Boolean
4144 get() = sheetNavigator.isVisible
4245
@@ -90,7 +93,7 @@ class CombinedNavigator(
9093 trace(message = " navigating to ${item::class .java.simpleName} " )
9194 launch {
9295 delay(delay)
93- if (isVisible ) {
96+ if (isSheetActive ) {
9497 sheetNavigator.push(item)
9598 } else {
9699 screensNavigator?.push(item)
@@ -100,7 +103,7 @@ class CombinedNavigator(
100103
101104 override fun push (items : List <Screen >) {
102105 trace(message = " navigating to ${items.joinToString { it::class .java.simpleName }} " )
103- if (isVisible ) {
106+ if (isSheetActive ) {
104107 sheetNavigator.push(items)
105108 } else {
106109 screensNavigator?.push(items)
@@ -126,7 +129,7 @@ class CombinedNavigator(
126129 }
127130
128131 override fun isAtRoot (): Boolean {
129- return if (isVisible ) {
132+ return if (isSheetActive ) {
130133 sheetNavigator.items.count() == 1
131134 } else {
132135 screensNavigator?.items?.count() == 1
@@ -135,15 +138,15 @@ class CombinedNavigator(
135138
136139 override fun pop (): Boolean {
137140 trace(message = " popping from back stack" )
138- return if (isVisible ) {
141+ return if (isSheetActive ) {
139142 sheetNavigator.pop()
140143 } else {
141144 screensNavigator?.pop() ? : false
142145 }
143146 }
144147
145148 override fun <T > popWithResult (result : T ): Boolean {
146- return if (isVisible ) {
149+ return if (isSheetActive ) {
147150 with (sheetNavigator) {
148151 val prev = if (size < 2 ) null else items[items.size - 2 ] as ? AppScreen
149152 prev?.onResult(result)
@@ -170,15 +173,15 @@ class CombinedNavigator(
170173
171174 override fun popAll () {
172175 trace(message = " popping all from back stack" )
173- if (isVisible ) {
176+ if (isSheetActive ) {
174177 sheetNavigator.popAll()
175178 } else {
176179 screensNavigator?.popAll()
177180 }
178181 }
179182
180183 override fun popUntil (predicate : (Screen ) -> Boolean ): Boolean {
181- return if (isVisible ) {
184+ return if (isSheetActive ) {
182185 sheetNavigator.popUntil(predicate)
183186 } else {
184187 screensNavigator?.popUntil(predicate) == true
@@ -191,7 +194,7 @@ class CombinedNavigator(
191194 screen : Screen ? ,
192195 content : @Composable () -> Unit
193196 ) {
194- if (isVisible ) {
197+ if (isSheetActive ) {
195198 sheetNavigator.saveableState(key, screen = screen, content = content)
196199 } else {
197200 val lastScreen by remember(screen) {
0 commit comments