diff --git a/src/Gui/DlgSettingsColorGradientImp.cpp b/src/Gui/DlgSettingsColorGradientImp.cpp index a644a851b5..0ecb57959e 100644 --- a/src/Gui/DlgSettingsColorGradientImp.cpp +++ b/src/Gui/DlgSettingsColorGradientImp.cpp @@ -52,6 +52,7 @@ DlgSettingsColorGradientImp::DlgSettingsColorGradientImp(const App::ColorGradien , ui(new Ui_DlgSettingsColorGradient) { ui->setupUi(this); + ui->spinBoxLabel->setRange(5, 30); ui->spinBoxDecimals->setMaximum(std::numeric_limits::digits10); // remove the automatic help button in dialog title since we don't use it @@ -104,6 +105,12 @@ void DlgSettingsColorGradientImp::setupConnections() connect(ui->floatLineEditMin, &QLineEdit::editingFinished, this, &DlgSettingsColorGradientImp::colorModelChanged); + + connect(ui->spinBoxLabel, qOverload(&QSpinBox::valueChanged), + this, &DlgSettingsColorGradientImp::colorModelChanged); + + connect(ui->spinBoxDecimals, qOverload(&QSpinBox::valueChanged), + this, &DlgSettingsColorGradientImp::colorModelChanged); } App::ColorGradientProfile DlgSettingsColorGradientImp::getProfile() const diff --git a/src/Gui/SoFCColorGradient.cpp b/src/Gui/SoFCColorGradient.cpp index d6c1c88027..bb140ce14b 100644 --- a/src/Gui/SoFCColorGradient.cpp +++ b/src/Gui/SoFCColorGradient.cpp @@ -48,7 +48,7 @@ SO_NODE_SOURCE(SoFCColorGradient) /*! Constructor. */ -SoFCColorGradient::SoFCColorGradient() : _bbox(4.0f, -4.0f, 4.5f, 4.0f), _precision(5) +SoFCColorGradient::SoFCColorGradient() : _bbox(4.0f, -4.0f, 4.5f, 4.0f), _precision(3) { SO_NODE_CONSTRUCTOR(SoFCColorGradient); coords = new SoCoordinate3; @@ -305,10 +305,9 @@ void SoFCColorGradient::customize(SoFCColorBarBase* parentNode) pos += QPoint(int(-1.1 * dlg.width()), int(-0.1 * dlg.height())); dlg.move(pos); - auto applyProfile = [&](const App::ColorGradientProfile& pro) { + auto applyProfile = [&](const App::ColorGradientProfile& pro, int precision) { _cColGrad.setProfile(pro); - _precision = dlg.numberOfDecimals(); - setRange(pro.fMin, pro.fMax, _precision); + setRange(pro.fMin, pro.fMax, precision); rebuildGradient(); triggerChange(parentNode); @@ -316,7 +315,7 @@ void SoFCColorGradient::customize(SoFCColorBarBase* parentNode) QObject::connect(&dlg, &Gui::Dialog::DlgSettingsColorGradientImp::colorModelChanged, [&] { try { - applyProfile(dlg.getProfile()); + applyProfile(dlg.getProfile(), dlg.numberOfDecimals()); } catch (const Base::Exception& e) { e.ReportException(); @@ -324,7 +323,11 @@ void SoFCColorGradient::customize(SoFCColorBarBase* parentNode) }); if (dlg.exec() != QDialog::Accepted) { - if (!profile.isEqual(dlg.getProfile())) - applyProfile(profile); + int decimals = dlg.numberOfDecimals(); + if (!profile.isEqual(dlg.getProfile()) || decimals != _precision) + applyProfile(profile, _precision); + } + else { + _precision = dlg.numberOfDecimals(); } }