// 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);
}
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)
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();