diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index e2a707b9de..22f4982e6a 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -85,9 +85,12 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { for (auto &[param, title, desc, icon, needs_restart] : toggle_defs) { auto toggle = new ParamControl(param, title, desc, icon, this); - if (needs_restart) { - QObject::connect(uiState(), &UIState::engagedChanged, [toggle](bool engaged) { - toggle.setEnabled(!engaged); + bool locked = params.getBool((param + "Lock").toStdString()); + toggle->setEnabled(!locked); + + if (needs_restart && !locked) { + QObject::connect(uiState(), &UIState::engagedChanged, [=](bool engaged) { + toggle->setEnabled(!engaged); }); QObject::connect(toggle, &ParamControl::toggleFlipped, [=](bool state) { @@ -96,9 +99,6 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { }); } - bool locked = params.getBool((param + "Lock").toStdString()); - toggle->setEnabled(!locked); - addItem(toggle); toggles[param.toStdString()] = toggle; diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index f048a9698d..79a245a0e7 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -78,9 +78,9 @@ void UIState::updateStatus() { } } - if (scene.engaged() != engaged_prev) { - engaged_prev = scene.engaged(); - emit engagedChanged(scene.engaged()); + if (engaged() != engaged_prev) { + engaged_prev = engaged(); + emit engagedChanged(engaged()); } // Handle onroad/offroad transition