diff --git a/src/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index 3851e1b63b..8dfc4fd436 100644 --- a/src/Gui/QuantitySpinBox.cpp +++ b/src/Gui/QuantitySpinBox.cpp @@ -743,15 +743,7 @@ QString QuantitySpinBox::getUserString(const Base::Quantity& val) const void QuantitySpinBox::setExpression(std::shared_ptr expr) { - Q_ASSERT(isBound()); - - try { - ExpressionBinding::setExpression(expr); - validateInput(); - } - catch (const Base::Exception & e) { - showInvalidExpression(QString::fromLatin1(e.what())); - } + ExpressionSpinBox::setExpression(expr); } QAbstractSpinBox::StepEnabled QuantitySpinBox::stepEnabled() const diff --git a/src/Gui/QuantitySpinBox.h b/src/Gui/QuantitySpinBox.h index 10bd9d4a33..3134520e13 100644 --- a/src/Gui/QuantitySpinBox.h +++ b/src/Gui/QuantitySpinBox.h @@ -157,7 +157,7 @@ protected: void paintEvent(QPaintEvent *event) override; private: - void validateInput(); + void validateInput() override; void updateText(const Base::Quantity&); void updateFromCache(bool notify, bool updateUnit = true); QString getUserString(const Base::Quantity& val, double& factor, QString& unitString) const; diff --git a/src/Gui/SpinBox.cpp b/src/Gui/SpinBox.cpp index 177f2d6151..2e2ea51d15 100644 --- a/src/Gui/SpinBox.cpp +++ b/src/Gui/SpinBox.cpp @@ -76,6 +76,10 @@ void ExpressionSpinBox::showIcon() iconLabel->show(); } +void ExpressionSpinBox::validateInput() +{ +} + void ExpressionSpinBox::showInvalidExpression(const QString& tip) { spinbox->setReadOnly(true); @@ -142,6 +146,7 @@ void ExpressionSpinBox::setExpression(std::shared_ptr expr) try { ExpressionBinding::setExpression(expr); + validateInput(); } catch (const Base::Exception & e) { showInvalidExpression(QString::fromLatin1(e.what())); diff --git a/src/Gui/SpinBox.h b/src/Gui/SpinBox.h index cb1f2dcb1d..6313cdfb0f 100644 --- a/src/Gui/SpinBox.h +++ b/src/Gui/SpinBox.h @@ -61,6 +61,7 @@ protected: void onChange() override; virtual void setNumberExpression(App::NumberExpression*) = 0; virtual void showIcon(); + virtual void validateInput(); void resizeWidget(); bool handleKeyEvent(const QString&);