+ //if (!theHighlighted.empty()) {
+ // // if there is highlighted object, we check whether it is in the list of selected objects
+ // // in that case this object is a handle of the moved lines. If there no such object in the selection,
+ // // the hightlighted object should moved and the selection is skipped. The skipped selection will be
+ // // deselected in the viewer by blockSelection signal in the startOperation method.
+ // bool isSelected = false;
+ // std::list<ModuleBase_ViewerPrs>::const_iterator anIt = theSelected.begin(),
+ // aLast = theSelected.end();
+ // for (; anIt != aLast && !isSelected; anIt++) {
+ // isSelected = ModelAPI_Feature::feature((*anIt).object()) == feature();
+ // }
+ // if (!isSelected)
+ // myFeatures = theHighlighted;
+ // else
+ // myFeatures = theSelected;
+ //} else
+ myFeatures = theSelected;
+ // add highlighted elements if they are not selected
+ std::list<ModuleBase_ViewerPrs>::const_iterator anIt;
+ for (anIt = theHighlighted.cbegin(); anIt != theHighlighted.cend(); ++anIt) {
+ if (!isContains(myFeatures, (*anIt)))
+ myFeatures.push_back(*anIt);
+ }
+ // Remove current feature if it is in the list (it will be moved as main feature)
+ FeaturePtr aFea = feature();
+ for (anIt = myFeatures.cbegin(); anIt != myFeatures.cend(); ++anIt) {
+ FeaturePtr aF = ModelAPI_Feature::feature((*anIt).object());
+ if (ModelAPI_Feature::feature((*anIt).object()) == feature()) {
+ myFeatures.erase(anIt);
+ break;
+ }
+ }