diff --git a/selfdrive/ui/layouts/main.py b/selfdrive/ui/layouts/main.py index 2096480f22..08ce50407d 100644 --- a/selfdrive/ui/layouts/main.py +++ b/selfdrive/ui/layouts/main.py @@ -35,6 +35,7 @@ class MainLayout: self._current_callback = None self._update_layout_rects(rect) + self._handle_onroad_transition() self._render_main_content() self._handle_input() @@ -47,7 +48,7 @@ class MainLayout: on_flag=lambda: setattr(self, '_current_callback', self._on_flag_clicked), ) self._layouts[MainState.SETTINGS].set_callbacks( - on_close=lambda: setattr(self, '_current_callback', self._on_settings_closed) + on_close=lambda: setattr(self, '_current_callback', self._set_mode_for_state) ) def _update_layout_rects(self, rect): @@ -57,14 +58,24 @@ class MainLayout: x_offset = SIDEBAR_WIDTH if self._sidebar_visible else 0 self._content_rect = rl.Rectangle(rect.y + x_offset, rect.y, rect.width - x_offset, rect.height) + def _handle_onroad_transition(self): + if ui_state.started != self._prev_onroad: + self._prev_onroad = ui_state.started + + self._set_mode_for_state() + + def _set_mode_for_state(self): + if ui_state.started: + self._current_mode = MainState.ONROAD + self._sidebar_visible = False + else: + self._current_mode = MainState.HOME + self._sidebar_visible = True + def _on_settings_clicked(self): self._current_mode = MainState.SETTINGS self._sidebar_visible = False - def _on_settings_closed(self): - self._current_mode = MainState.HOME if not ui_state.started else MainState.ONROAD - self._sidebar_visible = True - def _on_flag_clicked(self): pass @@ -73,13 +84,6 @@ class MainLayout: if self._sidebar_visible: self._sidebar.render(self._sidebar_rect) - if ui_state.started != self._prev_onroad: - self._prev_onroad = ui_state.started - if ui_state.started: - self._current_mode = MainState.ONROAD - else: - self._current_mode = MainState.HOME - content_rect = self._content_rect if self._sidebar_visible else self._window_rect self._layouts[self._current_mode].render(content_rect)