X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_ResultPart.cpp;h=bb12b10756fffa3c95096e4eda37a3d8ca10f63d;hb=283433d9c2f39fbd332d6eba691b6a0cd875e29d;hp=12361eb33a1054295d3f4c16be76d4c59695ffd5;hpb=4c2fb25615fc2e96957aeaee177251c40a434f4e;p=modules%2Fshaper.git diff --git a/src/Model/Model_ResultPart.cpp b/src/Model/Model_ResultPart.cpp index 12361eb33..bb12b1075 100644 --- a/src/Model/Model_ResultPart.cpp +++ b/src/Model/Model_ResultPart.cpp @@ -41,13 +41,16 @@ std::shared_ptr Model_ResultPart::partDoc() if (myTrsf.get()) { return baseRef()->partDoc(); } - return data()->document("PartDocument")->value(); + DocumentPtr aRes = data()->document(DOC_REF())->value(); + if (!aRes.get() && myIsInLoad) { // trying to get this document from the session + aRes = document()->subDocument(data()->name()); + } + return aRes; } Model_ResultPart::Model_ResultPart() { - myIsDisabled = true; // by default it is not initialized and false to be after created - setIsConcealed(false); + myIsInLoad = false; } void Model_ResultPart::activate() @@ -60,8 +63,11 @@ void Model_ResultPart::activate() std::shared_ptr aDocRef = data()->document(DOC_REF()); if (!aDocRef->value().get()) { // create (or open) a document if it is not yet created + myIsInLoad = true; std::shared_ptr aDoc = document()->subDocument(data()->name()); + myIsInLoad = false; if (aDoc) { + aDoc->synchronizeTransactions(); aDocRef->setValue(aDoc); } } @@ -104,9 +110,9 @@ bool Model_ResultPart::setDisabled(std::shared_ptr theThis, if (!myTrsf.get()) { // disable of base result part DocumentPtr aDoc = Model_ResultPart::partDoc(); if (aDoc.get() && aDoc->isOpened()) { + std::shared_ptr anIntDoc = std::dynamic_pointer_cast(aDoc); // make the current feature the last in any case: to update shapes defore deactivation too - FeaturePtr aLastFeature = std::dynamic_pointer_cast(aDoc->object( - ModelAPI_Feature::group(), aDoc->size(ModelAPI_Feature::group()) - 1)); + FeaturePtr aLastFeature = anIntDoc->lastFeature(); aDoc->setCurrentFeature(aLastFeature, false); if (theFlag) { // disable, so make all features disabled too // update the shape just before the deactivation: it will be used outside of part