diff --git a/src/Gui/Dialogs/DlgAddProperty.cpp b/src/Gui/Dialogs/DlgAddProperty.cpp index dd1ec93f6b..0e0ecb7b0b 100644 --- a/src/Gui/Dialogs/DlgAddProperty.cpp +++ b/src/Gui/Dialogs/DlgAddProperty.cpp @@ -802,6 +802,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 1ab3be6762..ac3cebc8c1 100644 --- a/src/Gui/ExpressionBinding.h +++ b/src/Gui/ExpressionBinding.h @@ -50,7 +50,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; @@ -100,6 +100,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);