diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp index 406ca2b8a9..57044cde9b 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp @@ -191,6 +191,13 @@ void TaskMultiTransformParameters::onFeatureDeleted(void) recomputeFeature(); } +void TaskMultiTransformParameters::slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj) +{ + if (Obj.getObject() == this->subFeature) + this->subFeature = nullptr; + TaskTransformedParameters::slotDeletedObject(Obj); +} + void TaskMultiTransformParameters::closeSubTask() { if (subTask) { @@ -209,6 +216,8 @@ void TaskMultiTransformParameters::onTransformDelete() std::vector transformFeatures = pcMultiTransform->Transformations.getValues(); App::DocumentObject* feature = transformFeatures[row]; + if (feature == this->subFeature) + this->subFeature = nullptr; pcMultiTransform->getDocument()->removeObject(feature->getNameInDocument()); closeSubTask(); diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h index 0b7b30de70..b2ac86fdbf 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h @@ -61,7 +61,9 @@ public: const std::vector getTransformFeatures(void) const; /// Return the currently active subFeature - PartDesign::Transformed* getSubFeature(void) { return subFeature; } + PartDesign::Transformed* getSubFeature(void) { + return subFeature; + } virtual void apply(); @@ -81,6 +83,8 @@ private Q_SLOTS: // a subFeature so as to revert the changes of an edit operation virtual void onUpdateView(bool); virtual void onFeatureDeleted(void); + /** Notifies when the object is about to be removed. */ + virtual void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj); protected: virtual void changeEvent(QEvent *e);