X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Listener.cpp;h=355142a31449d3cf0eff57d1dad009b7f04e57f9;hb=004fa7f94b343a782405d3fe21973521150729b4;hp=b97b34f8ef4857039f2ae1adee119cd9f30da82a;hpb=a9e2a6d2c2df15c63f937c30e2b40940f036e449;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Listener.cpp b/src/PartSet/PartSet_Listener.cpp index b97b34f8e..355142a31 100644 --- a/src/PartSet/PartSet_Listener.cpp +++ b/src/PartSet/PartSet_Listener.cpp @@ -37,21 +37,34 @@ void PartSet_Listener::processEvent(const Events_Message* theMessage) if (aType == EVENT_FEATURE_UPDATED || aType == EVENT_FEATURE_CREATED) { - const Model_FeatureUpdatedMessage* aUpdMsg = dynamic_cast(theMessage); - boost::shared_ptr aFeature = aUpdMsg->feature(); - if (myModule->workshop()->displayer()->IsVisible(aFeature) || - aType == EVENT_FEATURE_CREATED) - myModule->visualizePreview(aFeature, true); + const Model_FeatureUpdatedMessage* aUpdMsg = dynamic_cast + (theMessage); + std::set > aFeatures = aUpdMsg->features(); + std::set >::const_iterator anIt = aFeatures.begin(), + aLast = aFeatures.end(); + for (; anIt != aLast; anIt++) { + boost::shared_ptr aFeature = *anIt; + if (myModule->workshop()->displayer()->IsVisible(aFeature) || + aType == EVENT_FEATURE_CREATED) { + myModule->visualizePreview(aFeature, true, false); + myModule->activateFeature(aFeature, true); + } + } + myModule->workshop()->displayer()->UpdateViewer(); } if (aType == EVENT_FEATURE_DELETED) { const Model_FeatureDeletedMessage* aDelMsg = dynamic_cast(theMessage); boost::shared_ptr aDoc = aDelMsg->document(); - std::string aGroup = aDelMsg->group(); - if (aDelMsg->group().compare("Sketch") == 0) { // Update only Sketch group - myModule->workshop()->displayer()->EraseDeletedFeatures(); - myModule->updateCurrentPreview(aGroup); + std::set aGroups = aDelMsg->groups(); + std::set::const_iterator anIt = aGroups.begin(), aLast = aGroups.end(); + for (; anIt != aLast; anIt++) { + std::string aGroup = *anIt; + if (aGroup.compare("Sketch") == 0) { // Update only Sketch group + myModule->workshop()->displayer()->EraseDeletedFeatures(); + myModule->updateCurrentPreview(aGroup); + } } } }