Salome HOME
Merge branch 'master' of salome:modules/shaper
[modules/shaper.git] / src / Model / Model_Objects.cpp
index f1edf57aac1a427ab90f77430dd4a4197015690b..0b7678a5d532144cacb2b60ed48d64fe43b01631 100644 (file)
@@ -316,8 +316,8 @@ void Model_Objects::moveFeature(FeaturePtr theMoved, FeaturePtr theAfterThis)
   // update the feature and the history
   clearHistory(theMoved);
   // make sure all (selection) attributes of moved feature will be updated
-  static Events_ID EVENT_UPD = Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED);
-  ModelAPI_EventCreator::get()->sendUpdated(theMoved, EVENT_UPD);
+  static Events_ID kUpdateSelection = Events_Loop::loop()->eventByName(EVENT_UPDATE_SELECTION);
+  ModelAPI_EventCreator::get()->sendUpdated(theMoved, kUpdateSelection, false);
   ModelAPI_EventCreator::get()->sendReordered(theMoved);
 }
 
@@ -664,9 +664,10 @@ void Model_Objects::synchronizeFeatures(
       aKeptFeatures.insert(aFeature);
       if (anUpdatedMap.Contains(aFeatureLabel)) {
         if (!theOpen) { // on abort/undo/redo reinitialize attributes is something is changed
-          std::shared_ptr<Model_Data> aD = std::dynamic_pointer_cast<Model_Data>(aFeature->data());
-          aD->myAttrs.clear();
-          aFeature->initAttributes();
+          std::list<std::shared_ptr<ModelAPI_Attribute> > anAttrs = aFeature->data()->attributes("");
+          std::list<std::shared_ptr<ModelAPI_Attribute> >::iterator anAttr = anAttrs.begin();
+          for(; anAttr != anAttrs.end(); anAttr++)
+            (*anAttr)->reinit();
         }
         ModelAPI_EventCreator::get()->sendUpdated(aFeature, anUpdateEvent);
         if (aFeature->getKind() == "Parameter") { // if parameters are changed, update the results (issue 937)
@@ -720,7 +721,8 @@ void Model_Objects::synchronizeFeatures(
       FeaturePtr aFeature = myFeatures.Find(aFeatureLabel);
       if (std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aFeature).get())
         aComposites.push_back(aFeature);
-      updateResults(aFeature);
+      else
+        updateResults(aFeature);
     }
   }
   std::list<FeaturePtr>::iterator aComposite = aComposites.begin();