diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index e67e9ba9895..e016d0c4c6c 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -137,8 +137,10 @@ QVariant BaseAspect::value() const */ void BaseAspect::setValue(const QVariant &value) { - if (setValueQuietly(value)) + if (setValueQuietly(value)) { emit changed(); + emitChangedValue(); + } } /*! @@ -1218,6 +1220,10 @@ void BoolAspect::addToLayout(LayoutBuilder &builder) break; } d->m_checkBox->setChecked(value()); + builder.addItem(d->m_checkBox.data()); + connect(d->m_checkBox.data(), &QAbstractButton::clicked, this, [this] { + setValue(d->m_checkBox->isChecked()); + }); if (isAutoApply()) { connect(d->m_checkBox.data(), &QAbstractButton::clicked, this, [this](bool val) { setValue(val); }); @@ -1252,6 +1258,12 @@ void BoolAspect::setVolatileValue(const QVariant &val) d->m_checkBox->setChecked(val.toBool()); } +void BoolAspect::emitChangedValue() +{ + emit valueChanged(value()); +} + + /*! \reimp */ diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 4e28c0e37cd..e5423332688 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -115,6 +115,7 @@ public: virtual QVariant volatileValue() const; virtual void setVolatileValue(const QVariant &val); + virtual void emitChangedValue() {} virtual void readSettings(const QSettings *settings); virtual void writeSettings(QSettings *settings) const; @@ -210,6 +211,7 @@ public: QVariant volatileValue() const override; void setVolatileValue(const QVariant &val) override; + void emitChangedValue() override; bool value() const; void setValue(bool val);