diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp index 269076824..9c9141c68 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp @@ -460,22 +460,26 @@ bool TaskDlgMultiTransformParameters::accept() return TaskDlgFeatureParameters::accept (); } -bool TaskDlgMultiTransformParameters::reject() -{ - // Get objects before view is invalidated - // For the same reason we can't delegate showing the originals to TaskDlgTransformedParameters::reject() - PartDesign::MultiTransform* pcMultiTransform = static_cast(vp->getObject()); - std::vector transformFeatures = pcMultiTransform->Transformations.getValues(); - - // Delete the transformation features - must happen before abortCommand()! - for (std::vector::const_iterator it = transformFeatures.begin(); it != transformFeatures.end(); ++it) - { - if ((*it) != NULL) - Gui::Command::doCommand( - Gui::Command::Doc,"App.ActiveDocument.removeObject(\"%s\")", (*it)->getNameInDocument()); - } - - return TaskDlgTransformedParameters::reject(); -} +// FIXME: It seems all roll back is finely handled by abortCommand() in parent classes. On the other +// hand manual removal of objects may lead to segfault in dialog distructer of subtransformation +// due to TaskMultiTransformParameters::getSubFeature() returns already destroid object. So check +// that everything is fine and delete the method. (2015-07-31, Fat-Zer) +//bool TaskDlgMultiTransformParameters::reject() +//{ +// // Get objects before view is invalidated +// // For the same reason we can't delegate showing the originals to TaskDlgTransformedParameters::reject() +// PartDesign::MultiTransform* pcMultiTransform = static_cast(vp->getObject()); +// std::vector transformFeatures = pcMultiTransform->Transformations.getValues(); +// +// // Delete the transformation features - must happen before abortCommand()! +// for (std::vector::const_iterator it = transformFeatures.begin(); it != transformFeatures.end(); ++it) +// { +// if ((*it) != NULL) +// Gui::Command::doCommand( +// Gui::Command::Doc,"App.ActiveDocument.removeObject(\"%s\")", (*it)->getNameInDocument()); +// } +// +// return TaskDlgTransformedParameters::reject(); +//} #include "moc_TaskMultiTransformParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h index e9a256498..0b7b30de7 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h @@ -115,7 +115,7 @@ public: /// is called by the framework if the dialog is accepted (Ok) virtual bool accept(); /// is called by the framework if the dialog is rejected (Cancel) - virtual bool reject(); + // virtual bool reject(); }; } //namespace PartDesignGui