diff --git a/src/kconfigdialogmanager.cpp b/src/kconfigdialogmanager.cpp --- a/src/kconfigdialogmanager.cpp +++ b/src/kconfigdialogmanager.cpp @@ -592,7 +592,27 @@ void KConfigDialogManagerPrivate::onWidgetModified() { - const auto widget = qobject_cast(q->sender()); + const auto senderWidget = qobject_cast(q->sender()); + Q_ASSERT(senderWidget); + const auto widget = [=]() -> QWidget * { + const auto senderButton = qobject_cast(senderWidget); + if (!senderButton) { + return senderWidget; + } + + if (senderButton->objectName().startsWith("kcfg_")) { + return senderButton; + } + + for (auto groupBox : qAsConst(allExclusiveGroupBoxes)) { + const auto buttons = groupBox->findChildren(); + if (buttons.contains(senderButton)) { + return groupBox; + } + } + + return senderButton; + }(); Q_ASSERT(widget && widget->objectName().startsWith("kcfg_")); const auto configId = widget->objectName().mid(5); updateWidgetIndicator(configId, widget);