// activation may cause changes in current features in document, so it must be in transaction
bool isNewTransaction = false;
SessionPtr aMgr = ModelAPI_Session::get();
+ if (!aMgr->isOperation()) { // open transaction even document is not created to set current docs in setActiveDocument
+ aMgr->startOperation("Activation");
+ isNewTransaction = true;
+ }
if (!aDocRef->value().get()) { // create (or open) a document if it is not yet created
Handle(Model_Application) anApp = Model_Application::getApplication();
- if (!aMgr->isOperation()) {
- aMgr->startOperation("Activation");
- isNewTransaction = true;
- }
if (anApp->isLoadByDemand(data()->name())) {
anApp->loadDocument(data()->name(), aDocRef->docId()); // if it is just ne part, load may fail
} else {
if (!myTrsf.get()) { // disable of base result part
DocumentPtr aDoc = Model_ResultPart::partDoc();
if (aDoc.get() && aDoc->isOpened()) {
- std::shared_ptr<Model_Document> anIntDoc = std::dynamic_pointer_cast<Model_Document>(aDoc);
// make the current feature the last in any case: to update shapes defore deactivation too
- FeaturePtr aLastFeature = anIntDoc->lastFeature();
+ int aSize = aDoc->size(ModelAPI_Feature::group());
+ FeaturePtr aLastFeature;
+ if (aSize)
+ aLastFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aDoc->object(
+ ModelAPI_Feature::group(), aSize - 1));
+
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