diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 6529e83395..d6338063f3 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -130,6 +130,15 @@ void TogglesPanel::expandToggleDescription(const QString ¶m) { toggles[param.toStdString()]->showDescription(); } +void TogglesPanel::scrollToToggle(const QString ¶m) { + if (auto it = toggles.find(param.toStdString()); it != toggles.end()) { + auto scroll_area = qobject_cast(parent()->parent()); + if (scroll_area) { + scroll_area->ensureWidgetVisible(it->second); + } + } +} + void TogglesPanel::showEvent(QShowEvent *event) { updateToggles(); } @@ -411,6 +420,7 @@ void SettingsWindow::setCurrentPanel(int index, const QString ¶m) { } } else { emit expandToggleDescription(param); + emit scrollToToggle(param); } } @@ -451,6 +461,7 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { TogglesPanel *toggles = new TogglesPanel(this); QObject::connect(this, &SettingsWindow::expandToggleDescription, toggles, &TogglesPanel::expandToggleDescription); + QObject::connect(this, &SettingsWindow::scrollToToggle, toggles, &TogglesPanel::scrollToToggle); auto networking = new Networking(this); QObject::connect(uiState()->prime_state, &PrimeState::changed, networking, &Networking::setPrimeType); diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index 9a8e8270ae..d52cf16bb7 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -30,6 +30,7 @@ signals: void reviewTrainingGuide(); void showDriverView(); void expandToggleDescription(const QString ¶m); + void scrollToToggle(const QString ¶m); private: QPushButton *sidebar_alert_widget; @@ -66,6 +67,7 @@ public: public slots: void expandToggleDescription(const QString ¶m); + void scrollToToggle(const QString ¶m); private slots: void updateState(const UIState &s);