]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Fix for the issue #2132 : save current feature correctly for the composite features...
authormpv <mpv@opencascade.com>
Tue, 18 Apr 2017 10:32:14 +0000 (13:32 +0300)
committermpv <mpv@opencascade.com>
Tue, 18 Apr 2017 10:32:14 +0000 (13:32 +0300)
src/Model/Model_Document.cpp

index bf263768d895e06125e3fbc25ab5c9a589b4dab9..10d4605f2f9ba6a1c271912defe25b7826e42f41 100755 (executable)
@@ -244,7 +244,17 @@ bool Model_Document::save(
   if (currentFeature(false) != lastFeature()) {
     aSession->setCheckTransactions(false);
     aWasCurrent = currentFeature(false);
-    setCurrentFeature(lastFeature(), false);
+    // 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
+    FeaturePtr aLast = lastFeature();
+    if (aLast.get()) {
+      CompositeFeaturePtr aMain = ModelAPI_Tools::compositeOwner(aLast);
+      while(aMain.get()) {
+        aLast = aMain;
+        aMain = ModelAPI_Tools::compositeOwner(aLast);
+      }
+    }
+    setCurrentFeature(aLast, true);
   }
   // create a directory in the root document if it is not yet exist
   Handle(Model_Application) anApp = Model_Application::getApplication();
@@ -1115,7 +1125,7 @@ void Model_Document::setCurrentFeature(
       if (isSub(aMain, anIter)) // sub-elements of not-disabled feature are not disabled
         aDisabledFlag = false;
       else if (anOwners.find(anIter) != anOwners.end())
-        // disable the higher-level feature is the nested is the current
+        // disable the higher-level feature if the nested is the current
         aDisabledFlag = true;
     }