diff --git a/src/Gui/DlgSettingsColorGradientImp.cpp b/src/Gui/DlgSettingsColorGradientImp.cpp index 20818e1c1b..be76990d3d 100644 --- a/src/Gui/DlgSettingsColorGradientImp.cpp +++ b/src/Gui/DlgSettingsColorGradientImp.cpp @@ -23,6 +23,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include +# include # include # include # include @@ -50,14 +51,20 @@ DlgSettingsColorGradientImp::DlgSettingsColorGradientImp(const App::ColorGradien , ui(new Ui_DlgSettingsColorGradient) { ui->setupUi(this); + ui->spinBoxDecimals->setMaximum(std::numeric_limits::digits10); + // remove the automatic help button in dialog title since we don't use it setWindowFlag(Qt::WindowContextHelpButtonHint, false); + // the elementary charge is 1.6e-19, since such values might be the result of // simulations, use this as boundary for a scientific validator - validator = new QDoubleValidator(-2e19, 2e19, ui->spinBoxDecimals->maximum(), this); - validator->setNotation(QDoubleValidator::ScientificNotation); - ui->floatLineEditMax->setValidator(validator); - ui->floatLineEditMin->setValidator(validator); + QDoubleValidator* maxValidator = new QDoubleValidator(-2e19, 2e19, ui->spinBoxDecimals->maximum(), this); + maxValidator->setNotation(QDoubleValidator::ScientificNotation); + ui->floatLineEditMax->setValidator(maxValidator); + QDoubleValidator* minValidator = new QDoubleValidator(-2e19, 2e19, ui->spinBoxDecimals->maximum(), this); + minValidator->setNotation(QDoubleValidator::ScientificNotation); + ui->floatLineEditMin->setValidator(minValidator); + // assure that the LineEdit is as wide to contain numbers with 4 digits and 6 decimals QFontMetrics fm(ui->floatLineEditMax->font()); ui->floatLineEditMax->setMinimumWidth(QtTools::horizontalAdvance(fm, QString::fromLatin1("-8000.000000"))); diff --git a/src/Gui/DlgSettingsColorGradientImp.h b/src/Gui/DlgSettingsColorGradientImp.h index 2d25a8e91d..ca9ee89735 100644 --- a/src/Gui/DlgSettingsColorGradientImp.h +++ b/src/Gui/DlgSettingsColorGradientImp.h @@ -96,7 +96,6 @@ Q_SIGNALS: private: std::unique_ptr ui; - QDoubleValidator* validator; }; } // namespace Dialog diff --git a/src/Gui/SoFCColorGradient.cpp b/src/Gui/SoFCColorGradient.cpp index e252ac685f..d6c1c88027 100644 --- a/src/Gui/SoFCColorGradient.cpp +++ b/src/Gui/SoFCColorGradient.cpp @@ -315,7 +315,12 @@ void SoFCColorGradient::customize(SoFCColorBarBase* parentNode) }; QObject::connect(&dlg, &Gui::Dialog::DlgSettingsColorGradientImp::colorModelChanged, [&] { - applyProfile(dlg.getProfile()); + try { + applyProfile(dlg.getProfile()); + } + catch (const Base::Exception& e) { + e.ReportException(); + } }); if (dlg.exec() != QDialog::Accepted) {