forked from qt-creator/qt-creator
Utils: Allow cascaded aspect "setEnabler"
Change-Id: I4e519c0ef27460b42c4e44a755e5e6cbbf49ebdf Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -299,11 +299,16 @@ bool BaseAspect::isEnabled() const
|
|||||||
|
|
||||||
void BaseAspect::setEnabled(bool enabled)
|
void BaseAspect::setEnabled(bool enabled)
|
||||||
{
|
{
|
||||||
d->m_enabled = enabled;
|
|
||||||
for (QWidget *w : std::as_const(d->m_subWidgets)) {
|
for (QWidget *w : std::as_const(d->m_subWidgets)) {
|
||||||
QTC_ASSERT(w, continue);
|
QTC_ASSERT(w, continue);
|
||||||
w->setEnabled(enabled);
|
w->setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (enabled == d->m_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
d->m_enabled = enabled;
|
||||||
|
emit enabledChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -312,13 +317,16 @@ void BaseAspect::setEnabled(bool enabled)
|
|||||||
void BaseAspect::setEnabler(BoolAspect *checker)
|
void BaseAspect::setEnabler(BoolAspect *checker)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(checker, return);
|
QTC_ASSERT(checker, return);
|
||||||
setEnabled(checker->value());
|
|
||||||
connect(checker, &BoolAspect::volatileValueChanged, this, [this, checker] {
|
auto update = [this, checker] {
|
||||||
BaseAspect::setEnabled(checker->volatileValue());
|
BaseAspect::setEnabled(checker->isEnabled() && checker->volatileValue());
|
||||||
});
|
};
|
||||||
connect(checker, &BoolAspect::changed, this, [this, checker] {
|
|
||||||
BaseAspect::setEnabled(checker->volatileValue());
|
connect(checker, &BoolAspect::volatileValueChanged, this, update);
|
||||||
});
|
connect(checker, &BoolAspect::changed, this, update);
|
||||||
|
connect(checker, &BaseAspect::enabledChanged, this, update);
|
||||||
|
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BaseAspect::isReadOnly() const
|
bool BaseAspect::isReadOnly() const
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ signals:
|
|||||||
void volatileValueChanged();
|
void volatileValueChanged();
|
||||||
void labelLinkActivated(const QString &link);
|
void labelLinkActivated(const QString &link);
|
||||||
void checkedChanged();
|
void checkedChanged();
|
||||||
|
void enabledChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool internalToBuffer();
|
virtual bool internalToBuffer();
|
||||||
|
|||||||
Reference in New Issue
Block a user