@@ -77,38 +77,50 @@ def _render(self, _):
7777 # Render
7878 self ._scroller .render (self ._rect )
7979
80- # If not in background stack
81- if self .enabled :
82- self ._handle_transitions ()
80+ self ._handle_transitions ()
8381
8482 def _handle_transitions (self ):
83+ # Don't pop if onboarding
84+ if gui_app .get_active_widget () == self ._onboarding_window :
85+ return
86+
8587 if ui_state .started != self ._prev_onroad :
8688 self ._prev_onroad = ui_state .started
8789
90+ # onroad: after delay, pop nav stack and scroll to onroad
91+ # offroad: immediately scroll to home, but don't pop nav stack (can stay in settings)
8892 if ui_state .started :
8993 self ._onroad_time_delay = rl .get_time ()
9094 else :
9195 self ._scroll_to (self ._home_layout )
9296
93- # delay so we show home for a bit after starting
9497 if self ._onroad_time_delay is not None and rl .get_time () - self ._onroad_time_delay >= ONROAD_DELAY :
98+ gui_app .pop_widgets_to (self )
9599 self ._scroll_to (self ._onroad_layout )
96100 self ._onroad_time_delay = None
97101
102+ # when car leaves standstill, pop nav stack and scroll to onroad
98103 CS = ui_state .sm ["carState" ]
99104 if not CS .standstill and self ._prev_standstill :
105+ gui_app .pop_widgets_to (self )
100106 self ._scroll_to (self ._onroad_layout )
101107 self ._prev_standstill = CS .standstill
102108
103109 def _on_interactive_timeout (self ):
104- """Called on screen interactive timeout — scroll to default view, but don't disrupt onboarding or settings."""
105110 print (f'_on_interactive_timeout, { ui_state .started = } ' )
106- if not self ._onboarding_window .completed or gui_app .get_active_widget () != self :
111+
112+ # Don't pop if onboarding
113+ print ('get active' , gui_app .get_active_widget (), self ._onboarding_window .completed )
114+ if gui_app .get_active_widget () == self ._onboarding_window :
107115 return
108116
109- if ui_state .started and not ui_state .sm ["carState" ].standstill :
110- self ._scroll_to (self ._onroad_layout )
111- elif not ui_state .started :
117+ if ui_state .started :
118+ # Don't pop if at standstill
119+ if not ui_state .sm ["carState" ].standstill :
120+ gui_app .pop_widgets_to (self )
121+ self ._scroll_to (self ._onroad_layout )
122+ else :
123+ gui_app .pop_widgets_to (self )
112124 self ._scroll_to (self ._home_layout )
113125
114126 def _on_bookmark_clicked (self ):
0 commit comments