for (aRefsIter = aRefs.begin(); aRefsIter != aRefs.end(); aRefsIter++) {
std::shared_ptr<ModelAPI_AttributeSelectionList> aSel =
std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(*aRefsIter);
+ // #19071 : avoid sending of update event in cycle
+ bool aWasBlocked = theFeature->data()->blockSendAttributeUpdated(true);
for(int a = aSel->size() - 1; a >= 0; a--) {
std::shared_ptr<ModelAPI_AttributeSelection> aSelAttr =
std::dynamic_pointer_cast<ModelAPI_AttributeSelection>(aSel->value(a));
}
}
}
+ if (!aWasBlocked)
+ theFeature->data()->blockSendAttributeUpdated(false);
}
if (aState != ModelAPI_StateDone)
myContext = theContextLab;
// searching by neighbors
std::list<std::pair<TopoDS_Shape, int> > aNBs; /// neighbor sub-shape -> level of neighborhood
- for(int aLevel = 1; true; aLevel++) {
+ // # 19071 : moving through all levels may be too long, in practice there are no more than 2 or 3
+ // levels real cases, so, make it "5" as maximum possible
+ for(int aLevel = 1; aLevel < 5; aLevel++) {
TopTools_MapOfShape aNewNB;
findNeighbors(theContext, theValue, aLevel, aNewNB);
if (aNewNB.Extent() == 0) { // there are no neighbors of the given level, stop iteration