diff --git a/src/Gui/Dialogs/DlgAddProperty.cpp b/src/Gui/Dialogs/DlgAddProperty.cpp index eb2a63b5f8..d0e561e6db 100644 --- a/src/Gui/Dialogs/DlgAddProperty.cpp +++ b/src/Gui/Dialogs/DlgAddProperty.cpp @@ -804,6 +804,9 @@ bool DlgAddProperty::clearBoundProperty() if (App::Property* prop = propertyItem->getFirstProperty()) { propertyItem->unbind(); + if (auto* eb = dynamic_cast(editor.get())) { + eb->unbind(); + } propertyItem->removeProperty(prop); container->removeDynamicProperty(prop->getName()); closeTransaction(TransactionOption::Abort); diff --git a/src/Gui/ExpressionBinding.cpp b/src/Gui/ExpressionBinding.cpp index 9799f16a70..5e04b45ef5 100644 --- a/src/Gui/ExpressionBinding.cpp +++ b/src/Gui/ExpressionBinding.cpp @@ -334,6 +334,12 @@ QPixmap ExpressionWidget::getIcon(const char* name, const QSize& size) const return icon; } +void ExpressionWidget::unbind() +{ + iconLabel->hide(); + ExpressionBinding::unbind(); +} + void ExpressionWidget::makeLabel(QLineEdit* le) { defaultPalette = le->palette(); diff --git a/src/Gui/ExpressionBinding.h b/src/Gui/ExpressionBinding.h index 931e355ac0..411dfd7ef0 100644 --- a/src/Gui/ExpressionBinding.h +++ b/src/Gui/ExpressionBinding.h @@ -49,7 +49,7 @@ public: virtual void bind(const App::ObjectIdentifier& _path); virtual void bind(const App::Property& prop); bool isBound() const; - void unbind(); + virtual void unbind(); virtual bool apply(const std::string& propName); virtual bool apply(); bool hasExpression() const; @@ -99,6 +99,7 @@ class GuiExport ExpressionWidget: public ExpressionBinding public: ExpressionWidget(); QPixmap getIcon(const char* name, const QSize& size) const; + void unbind() override; protected: void makeLabel(QLineEdit* parent);