From ae1e006426463590eea66afdcb9e9aee57e7e1db Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 6 Jul 2022 21:41:21 +0200 Subject: [PATCH] Utils: Allow programmatically change of IntegerAspect Using setValue() on an IntegerAspect only had a visual effect if it happened before adding it to a layout. If the aspect had been added already the value silently got changed (internally) but this was never reflected on the respective SpinBox. Change-Id: I60297d9d38835842b3b02a36787c0a2001477427 Reviewed-by: David Schulz --- src/libs/utils/aspects.cpp | 10 +++++++++- src/libs/utils/aspects.h | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 3739a00e9e1..210e32a0012 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1825,7 +1825,15 @@ qint64 IntegerAspect::value() const void IntegerAspect::setValue(qint64 value) { - BaseAspect::setValue(value); + if (BaseAspect::setValueQuietly(value)) { + if (d->m_spinBox) + d->m_spinBox->setValue(value); + //qDebug() << "SetValue: Changing" << labelText() << " to " << value; + emit changed(); + //QTC_CHECK(!labelText().isEmpty()); + emit valueChanged(value); + //qDebug() << "SetValue: Changed" << labelText() << " to " << value; + } } void IntegerAspect::setRange(qint64 min, qint64 max) diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index bb39a398cb1..f2da48e6ff4 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -448,6 +448,9 @@ public: struct Data : BaseAspect::Data { qint64 value = 0; }; +signals: + void valueChanged(int newValue); + private: std::unique_ptr d; };