diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index b058c9d365b..900e9f86866 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1297,9 +1297,16 @@ void StringAspect::makeCheckable(CheckBoxPlacement checkBoxPlacement, : BoolAspect::LabelPlacement::AtCheckBox); d->m_checker->setSettingsKey(checkerKey); - connect(d->m_checker.get(), &BoolAspect::changed, this, &StringAspect::internalToGui); - connect(d->m_checker.get(), &BoolAspect::changed, this, &StringAspect::changed); - connect(d->m_checker.get(), &BoolAspect::changed, this, &StringAspect::checkedChanged); + connect(d->m_checker.get(), &BoolAspect::changed, this, [this] { + internalToGui(); + emit changed(); + checkedChanged(); + }); + + connect(d->m_checker.get(), &BoolAspect::volatileValueChanged, this, [this] { + internalToGui(); + checkedChanged(); + }); internalToGui(); } diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index bbd9e36ed22..f36a96cc196 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -239,19 +239,18 @@ public: void setValue(const ValueType &value) { m_external = value; - if (isDirty()) { - externalToInternal(); - internalToGui(); - } + const bool emitSignal = m_external != m_internal; + externalToInternal(); + internalToGui(); + if (emitSignal) + emit changed(); } void setValueQuietly(const ValueType &value) { m_external = value; - if (isDirty()) { - externalToInternal(); - internalToGui(); - } + externalToInternal(); + internalToGui(); } void setVolatileValue(const ValueType &value)