- QList<ModuleBase_ViewerPrs> aPrsList = aSelection->getSelected(ModuleBase_ISelection::Viewer);
- TopoDS_Shape aShape;
- ResultPtr aResult;
- FeaturePtr aFeature;
- foreach(ModuleBase_ViewerPrs aPrs, aPrsList) {
- aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aPrs.object());
- if (aResult.get() != NULL) {
- aShape = aPrs.shape();
- if (aShape.IsEqual(aResult->shape()->impl<TopoDS_Shape>()))
- hasFeature = true;
- else
- hasAttribute = true;
- } else {
- aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aPrs.object());
- hasFeature = (aFeature.get() != NULL);
+ QList<ModuleBase_ViewerPrsPtr> aPrsList = aSelection->getSelected(ModuleBase_ISelection::Viewer);
+ if (aPrsList.size() > 1) {
+ hasFeature = true;
+ } else if (aPrsList.size() == 1) {
+ ResultPtr aResult;
+ FeaturePtr aFeature;
+ foreach(ModuleBase_ViewerPrsPtr aPrs, aPrsList) {
+ aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aPrs->object());
+ if (aResult.get() != NULL) {
+ const GeomShapePtr& aShape = aPrs->shape();
+ if (aShape.get() && aShape->isEqual(aResult->shape()))
+ hasFeature = true;
+ else
+ hasAttribute = true;
+ } else {
+ aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aPrs->object());
+ hasFeature = (aFeature.get() != NULL);
+ }