fix dangling pointer when cancelling multi-transform task panel

This commit is contained in:
wmayer
2017-09-29 19:18:34 +02:00
parent 025639ca0e
commit 20072a303d
2 changed files with 14 additions and 1 deletions

View File

@@ -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<App::DocumentObject*> transformFeatures = pcMultiTransform->Transformations.getValues();
App::DocumentObject* feature = transformFeatures[row];
if (feature == this->subFeature)
this->subFeature = nullptr;
pcMultiTransform->getDocument()->removeObject(feature->getNameInDocument());
closeSubTask();

View File

@@ -61,7 +61,9 @@ public:
const std::vector<App::DocumentObject*> 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);