From 07549653cd8908316f7a18cd6e698653e64e717e Mon Sep 17 00:00:00 2001 From: donovaly Date: Fri, 20 Dec 2019 00:52:46 +0100 Subject: [PATCH] UnitsCalculator fixes - missing initial value - missing check for invalid units starting with 'e' --- src/Gui/DlgUnitsCalculatorImp.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index 86b34b0d18b9..b37d0d8a7c27 100644 --- a/src/Gui/DlgUnitsCalculatorImp.cpp +++ b/src/Gui/DlgUnitsCalculatorImp.cpp @@ -80,6 +80,7 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WindowFlags fl ) ui->unitsBox->addItem(it->getTypeString()); } + ui->quantitySpinBox->setValue(1.0); ui->quantitySpinBox->setUnit(units.front()); } @@ -106,8 +107,11 @@ void DlgUnitsCalculator::textChanged(QString unit) void DlgUnitsCalculator::valueChanged(const Base::Quantity& quant) { - // first check the unit, if it is invalid, getTypeString() outputs an empty string - if (Base::Unit(ui->UnitInput->text()).getTypeString().isEmpty()) { + // first check the unit, if it is invalid, getTypeString() outputs an empty string + // explicitly check for "ee" like in "eeV" because this would trigger an exception in Base::Unit + // since it expects then a scientific notation number like "1e3" + if ( (ui->UnitInput->text().mid(0, 2) == QString::fromLatin1("ee")) || + Base::Unit(ui->UnitInput->text()).getTypeString().isEmpty()) { ui->ValueOutput->setText(tr("unknown unit: ") + ui->UnitInput->text()); ui->pushButton_Copy->setEnabled(false); } else { // the unit is valid