mici ui: fix onroad transitions if in settings (#37467)

* fix

* type
This commit is contained in:
Shane Smiskol
2026-02-27 18:32:28 -08:00
committed by GitHub
parent 3a958b882a
commit 2e42bf9fa4
4 changed files with 14 additions and 10 deletions
+1 -2
View File
@@ -49,6 +49,7 @@ class MiciMainLayout(Scroller):
# Set callbacks
self._setup_callbacks()
gui_app.add_nav_stack_tick(self._handle_transitions)
gui_app.push_widget(self)
# Start onboarding if terms or training not completed, make sure to push after self
@@ -76,8 +77,6 @@ class MiciMainLayout(Scroller):
# Render
super()._render(self._rect)
self._handle_transitions()
def _handle_transitions(self):
# Don't pop if onboarding
if gui_app.get_active_widget() == self._onboarding_window:
@@ -166,13 +166,13 @@ class NetworkLayoutMici(NavScroller):
self._wifi_manager.set_active(True)
# Process wifi callbacks while at any point in the nav stack
gui_app.set_nav_stack_tick(self._wifi_manager.process_callbacks)
gui_app.add_nav_stack_tick(self._wifi_manager.process_callbacks)
def hide_event(self):
super().hide_event()
self._wifi_manager.set_active(False)
gui_app.set_nav_stack_tick(None)
gui_app.remove_nav_stack_tick(self._wifi_manager.process_callbacks)
def _toggle_roaming(self, checked: bool):
self._wifi_manager.update_gsm_settings(checked, ui_state.params.get("GsmApn") or "", ui_state.params.get_bool("GsmMetered"))
+10 -5
View File
@@ -220,7 +220,7 @@ class GuiApplication:
self._frame = 0
self._window_close_requested = False
self._nav_stack: list[object] = []
self._nav_stack_tick: Callable[[], None] | None = None
self._nav_stack_ticks: list[Callable[[], None]] = []
self._nav_stack_widgets_to_render = 1 if self.big_ui() else 2
self._mouse = MouseState(self._scale)
@@ -411,8 +411,13 @@ class GuiApplication:
return self._nav_stack[-1]
return None
def set_nav_stack_tick(self, tick_function: Callable | None):
self._nav_stack_tick = tick_function
def add_nav_stack_tick(self, tick_function: Callable[[], None]):
if tick_function not in self._nav_stack_ticks:
self._nav_stack_ticks.append(tick_function)
def remove_nav_stack_tick(self, tick_function: Callable[[], None]):
if tick_function in self._nav_stack_ticks:
self._nav_stack_ticks.remove(tick_function)
def set_should_render(self, should_render: bool):
self._should_render = should_render
@@ -561,8 +566,8 @@ class GuiApplication:
rl.clear_background(rl.BLACK)
# Allow a Widget to still run a function regardless of the stack depth
if self._nav_stack_tick is not None:
self._nav_stack_tick()
for tick in self._nav_stack_ticks:
tick()
# Only render top widgets
for widget in self._nav_stack[-self._nav_stack_widgets_to_render:]:
+1 -1
View File
@@ -508,7 +508,7 @@ class Setup(Widget):
self._network_monitor = NetworkConnectivityMonitor()
self._network_monitor.start()
self._prev_has_internet = False
gui_app.set_nav_stack_tick(self._nav_stack_tick)
gui_app.add_nav_stack_tick(self._nav_stack_tick)
self._start_page = StartPage()
self._start_page.set_click_callback(self._getting_started_button_callback)