Skip to content

Commit 3e9ee7a

Browse files
committed
cursor fix pt1
cursor fix pt2
1 parent f59d35a commit 3e9ee7a

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

selfdrive/ui/mici/layouts/main.py

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def __init__(self):
4242
self._onroad_layout,
4343
], spacing=0, pad_start=0, pad_end=0)
4444
self._scroller.set_reset_scroll_at_show(False)
45-
self._scroller.set_enabled(lambda: self.enabled)
45+
self._scroller.set_enabled(lambda: self.enabled) # for nav stack
4646

4747
# Disable scrolling when onroad is interacting with bookmark
4848
self._scroller.set_scrolling_enabled(lambda: not self._onroad_layout.is_swiping_left())
@@ -60,7 +60,7 @@ def __init__(self):
6060
def _setup_callbacks(self):
6161
self._home_layout.set_callbacks(on_settings=lambda: gui_app.push_widget(self._settings_layout))
6262
self._onroad_layout.set_click_callback(lambda: self._scroll_to(self._home_layout))
63-
device.add_interactive_timeout_callback(self._set_mode_for_started)
63+
device.add_interactive_timeout_callback(self._on_interactive_timeout)
6464

6565
def _scroll_to(self, layout: Widget):
6666
layout_x = int(layout.rect.x)
@@ -77,43 +77,51 @@ 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:
91-
self._set_mode_for_started(True)
95+
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:
95-
self._set_mode_for_started(True)
98+
gui_app.pop_widgets_to(self)
99+
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:
100105
gui_app.pop_widgets_to(self)
101106
self._scroll_to(self._onroad_layout)
102107
self._prev_standstill = CS.standstill
103108

104-
def _set_mode_for_started(self, onroad_transition: bool = False):
105-
print(f'_set_mode_for_started, {ui_state.started=}, {onroad_transition=}')
109+
def _on_interactive_timeout(self):
110+
print(f'_on_interactive_timeout, {ui_state.started=}')
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:
115+
return
116+
106117
if ui_state.started:
107-
CS = ui_state.sm["carState"]
108-
# Only go onroad if car starts or is not at a standstill
109-
if not CS.standstill or onroad_transition:
118+
# Don't pop if at standstill
119+
if not ui_state.sm["carState"].standstill:
110120
gui_app.pop_widgets_to(self)
111121
self._scroll_to(self._onroad_layout)
112122
else:
113-
# Stay in settings if car turns off while in settings
114-
if not onroad_transition or gui_app.get_active_widget() != self:
115-
gui_app.pop_widgets_to(self)
116-
self._scroll_to(self._home_layout)
123+
gui_app.pop_widgets_to(self)
124+
self._scroll_to(self._home_layout)
117125

118126
def _on_bookmark_clicked(self):
119127
user_bookmark = messaging.new_message('bookmarkButton')

0 commit comments

Comments
 (0)