X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSetPlugin%2FPartSetPlugin_Part.cpp;h=31759862f1fe20f53d1bc72133dc191f94c8772e;hb=01a8a031b214d727e075a90ccdba0667a24db853;hp=3ef0eb1928bb04f2984ef6f86a7eadf6f7bebe60;hpb=7180ff8200cdfcbdcf28b31e6b8729824b3f1599;p=modules%2Fshaper.git diff --git a/src/PartSetPlugin/PartSetPlugin_Part.cpp b/src/PartSetPlugin/PartSetPlugin_Part.cpp index 3ef0eb192..31759862f 100644 --- a/src/PartSetPlugin/PartSetPlugin_Part.cpp +++ b/src/PartSetPlugin/PartSetPlugin_Part.cpp @@ -31,8 +31,8 @@ void PartSetPlugin_Part::execute() // do not activate part by simple execution if it is not loaded yet: it must be explicitly // activated for this if (!ModelAPI_Session::get()->isLoadByDemand(aResult->data()->name())) { - // On undo/redo creation of the part result the Object Borwser must get creation event - // earlier that activation of this part event (otherwise the crash is producted) + // On undo/redo creation of the part result the Object Browser must get creation event + // earlier that activation of this part event (otherwise the crash is produced) // So, send a creation event earlier, without any grouping static Events_ID aCreateID = Events_Loop::eventByName(EVENT_OBJECT_CREATED); ModelAPI_EventCreator::get()->sendUpdated(aResult, aCreateID, false); @@ -55,29 +55,29 @@ std::shared_ptr PartSetPlugin_Part::addFeature(std::string the ResultPartPtr aResult = std::dynamic_pointer_cast(firstResult()); if (aResult.get()) { DocumentPtr aDoc = aResult->partDoc(); - if (aDoc.get()) + if (aDoc.get() && aDoc->isOpened()) return aDoc->addFeature(theID); } return FeaturePtr(); } -int PartSetPlugin_Part::numberOfSubs() const +int PartSetPlugin_Part::numberOfSubs(bool forTree) const { ResultPartPtr aResult = std::dynamic_pointer_cast(firstResult()); if (aResult.get()) { DocumentPtr aDoc = aResult->partDoc(); - if (aDoc.get()) + if (aDoc.get() && aDoc->isOpened()) return aDoc->numInternalFeatures(); } return 0; } -std::shared_ptr PartSetPlugin_Part::subFeature(const int theIndex) const +std::shared_ptr PartSetPlugin_Part::subFeature(const int theIndex, bool forTree) { ResultPartPtr aResult = std::dynamic_pointer_cast(firstResult()); if (aResult.get()) { DocumentPtr aDoc = aResult->partDoc(); - if (aDoc.get()) { + if (aDoc.get() && aDoc->isOpened()) { return aDoc->internalFeature(theIndex); } } @@ -89,7 +89,7 @@ int PartSetPlugin_Part::subFeatureId(const int theIndex) const ResultPartPtr aResult = std::dynamic_pointer_cast(firstResult()); if (aResult.get()) { DocumentPtr aDoc = aResult->partDoc(); - if (aDoc.get()) { + if (aDoc.get() && aDoc->isOpened()) { return aDoc->object(ModelAPI_Feature::group(), theIndex)->data()->featureId(); } } @@ -101,7 +101,7 @@ bool PartSetPlugin_Part::isSub(ObjectPtr theObject) const ResultPartPtr aResult = std::dynamic_pointer_cast(firstResult()); if (aResult.get()) { DocumentPtr aDoc = aResult->partDoc(); - return document() == aDoc; + return theObject->document() == aDoc; } return false; } @@ -111,7 +111,7 @@ void PartSetPlugin_Part::removeFeature(std::shared_ptr theFeat ResultPartPtr aResult = std::dynamic_pointer_cast(firstResult()); if (aResult.get()) { DocumentPtr aDoc = aResult->partDoc(); - if (aDoc.get()) + if (aDoc.get() && aDoc->isOpened()) aDoc->removeFeature(theFeature); } }