X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_Session.cpp;h=172b7d3ff220ffd0e685853b53ffc524b62cb89f;hb=a83e22046c5fb877969fa8879e42491d4054f198;hp=e66e434a1348e12a4f3fef8cc3b7e043a8ee2dea;hpb=b14d19b6b3653386e498f107e76ee37784fb4d94;p=modules%2Fshaper.git diff --git a/src/Model/Model_Session.cpp b/src/Model/Model_Session.cpp index e66e434a1..172b7d3ff 100644 --- a/src/Model/Model_Session.cpp +++ b/src/Model/Model_Session.cpp @@ -219,6 +219,15 @@ std::shared_ptr Model_Session::activeDocument() static void makeCurrentLast(std::shared_ptr theDoc) { if (theDoc.get()) { FeaturePtr aLast = std::dynamic_pointer_cast(theDoc)->lastFeature(); + // if last is nested into something else, make this something else as last: + // otherwise it will look like edition of sub-element, so, the main will be disabled + if (aLast.get()) { + CompositeFeaturePtr aMain = ModelAPI_Tools::compositeOwner(aLast); + while(aMain.get()) { + aLast = aMain; + aMain = ModelAPI_Tools::compositeOwner(aLast); + } + } theDoc->setCurrentFeature(aLast, false); } } @@ -346,7 +355,7 @@ void Model_Session::processEvent(const std::shared_ptr& theMessa const std::shared_ptr aMsg = std::dynamic_pointer_cast(theMessage); if (aMsg) { - // proccess the plugin info, load plugin + // process the plugin info, load plugin if (myPlugins.find(aMsg->id()) == myPlugins.end()) { myPlugins[aMsg->id()] = std::pair( aMsg->pluginLibrary(), aMsg->documentKind());