+ QList<ModuleBase_ViewerPrs>::const_iterator anIt = theValues.begin(), aLast = theValues.end();
+ bool isDone = false;
+ for (int i = thePosition; i < theValues.size(); i++) {
+ ModuleBase_ViewerPrs aValue = theValues[i];
+ bool aProcessed = false;
+ if (isValidSelection(aValue)) {
+ aProcessed = setSelectionCustom(aValue);
+ }
+ // if there is at least one set, the result is true
+ isDone = isDone || aProcessed;
+ // when an object, which do not satisfy the validating process, stop set selection
+ if (!aProcessed)
+ break;
+ else
+ thePosition++;
+ }
+ if (isDone) {
+ updateObject(myFeature);
+ // this emit is necessary to call store/restore method an restore type of selection
+ emit valuesChanged();
+ }
+ return isDone;
+}
+
+//********************************************************************
+bool ModuleBase_WidgetMultiSelector::setSelectionCustom(const ModuleBase_ViewerPrs& thePrs)
+{
+ TopoDS_Shape aShape = thePrs.shape();
+ if (!acceptSubShape(aShape))
+ return false;
+
+ ResultPtr aResult;
+ if (!thePrs.owner().IsNull()) {
+ ObjectPtr anObject = myWorkshop->selection()->getSelectableObject(thePrs.owner());
+ aResult = std::dynamic_pointer_cast<ModelAPI_Result>(anObject);
+ }
+ else {
+ aResult = std::dynamic_pointer_cast<ModelAPI_Result>(thePrs.object());
+ }
+
+