X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_Document.cpp;h=4d4207648740649aec6d7da1fdad57830da3701d;hb=b0196aeefbaa53754b1052fab904386707caad87;hp=d71b770c78c9c06fc6b516595fafb20c5b500245;hpb=e40b79a40fe27c188aa1c49643559be328bbcb06;p=modules%2Fshaper.git diff --git a/src/Model/Model_Document.cpp b/src/Model/Model_Document.cpp index d71b770c7..4d4207648 100755 --- a/src/Model/Model_Document.cpp +++ b/src/Model/Model_Document.cpp @@ -1000,12 +1000,14 @@ void Model_Document::moveFeature(FeaturePtr theMoved, FeaturePtr theAfterThis) void Model_Document::updateHistory(const std::shared_ptr theObject) { - myObjs->updateHistory(theObject); + if (myObjs) + myObjs->updateHistory(theObject); } void Model_Document::updateHistory(const std::string theGroup) { - myObjs->updateHistory(theGroup); + if (myObjs) + myObjs->updateHistory(theGroup); } const std::set Model_Document::subDocuments() const @@ -1493,8 +1495,13 @@ bool Model_Document::isLaterByDep(FeaturePtr theThis, FeaturePtr theOther) { if (!aRefFeat.get()) { // take feature of the result aRefFeat = feature(std::dynamic_pointer_cast(aRefObj)); } - if (aRefFeat.get() && aRefFeat == theThis) { - return false; // other references to this, so other later than this + if (aRefFeat.get()) { + if (aRefFeat == theThis) + return false; // other references to this, so other later than this + if (std::dynamic_pointer_cast(aRefFeat)) { + if (!isLaterByDep(theThis, aRefFeat)) // nested composites: recursion + return false; + } } } }