From 6c5be6ddab1748bda122c0ac55c2b1ae5d0dcc47 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 13 Dec 2025 04:08:01 -0800 Subject: [PATCH] WifiUi: fix infinite wraps (#36863) * fix infinite wrap * fix selection * Revert "fix selection" This reverts commit 555c57922409312bf5d9efedf571994f157b9e44. * revert * revert * revert * revert * cleaner * cleaner * mypy!! --- .../ui/mici/layouts/settings/network/wifi_ui.py | 14 ++++++++------ selfdrive/ui/mici/widgets/dialog.py | 10 +++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py b/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py index 99e41431e..5a79b8a63 100644 --- a/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py +++ b/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py @@ -389,12 +389,6 @@ class WifiUIMici(BigMultiOptionDialog): else: network_button = WifiItem(network) - def show_network_info_page(_network): - self._network_info_page.set_current_network(_network) - self._should_open_network_info_page = True - - network_button.set_click_callback(lambda _net=network, _button=network_button: _button._selected and show_network_info_page(_net)) - self.add_button(network_button) # remove networks no longer present @@ -406,6 +400,14 @@ class WifiUIMici(BigMultiOptionDialog): self._wifi_manager.connect_to_network(ssid, password) self._update_buttons() + def _on_option_selected(self, option: str): + super()._on_option_selected(option) + + # only open if button is already selected + if option in self._networks and option == self._selected_option: + self._network_info_page.set_current_network(self._networks[option]) + self._should_open_network_info_page = True + def _connect_to_network(self, ssid: str): network = self._networks.get(ssid) if network is None: diff --git a/selfdrive/ui/mici/widgets/dialog.py b/selfdrive/ui/mici/widgets/dialog.py index e445c0c9c..2118b62ed 100644 --- a/selfdrive/ui/mici/widgets/dialog.py +++ b/selfdrive/ui/mici/widgets/dialog.py @@ -331,14 +331,10 @@ class BigMultiOptionDialog(BigDialogBase): self.add_button(BigDialogOptionButton(option)) def add_button(self, button: BigDialogOptionButton): - og_callback = button._click_callback + def click_callback(_btn=button): + self._on_option_selected(_btn.option) - def wrapped_callback(btn=button): - self._on_option_selected(btn.option) - if og_callback: - og_callback() - - button.set_click_callback(wrapped_callback) + button.set_click_callback(click_callback) self._scroller.add_widget(button) def show_event(self):