fix dangling pointer when cancelling multi-transform task panel
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user