if (aFeature) {
ResultPtr aRes = aFeature->firstResult();
if (aRes.get() && (aRes->groupName() == ModelAPI_ResultPart::group())) {
- return std::dynamic_pointer_cast<ModelAPI_ResultPart>(aRes);
+ ResultPartPtr aPartRes = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aRes);
+ // Use only original parts, not a placement results
+ if (aPartRes == aPartRes->original())
+ return aPartRes;
}
}
return ResultPartPtr();
aObj = (ModelAPI_Object*) theIndex.internalPointer();
}
if (aObj) {
- aFlags |= Qt::ItemIsEditable;
-
- if (!aObj->isDisabled())
- aFlags |= Qt::ItemIsEnabled;
- } else
- aFlags |= Qt::ItemIsEnabled;
+ if (aObj->isDisabled())
+ return Qt::ItemFlags();
+
+ bool isCompositeSub = false;
+ if (theIndex.column() == 1) {
+ ObjectPtr aObjPtr = aObj->data()->owner();
+ FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObjPtr);
+ if (aFeature.get()) {
+ CompositeFeaturePtr aCompFea = ModelAPI_Tools::compositeOwner(aFeature);
+ if (aCompFea.get())
+ isCompositeSub = true;
+ } else {
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aObjPtr);
+ if (aResult.get()) {
+ ResultCompSolidPtr aCompRes = ModelAPI_Tools::compSolidOwner(aResult);
+ if (aCompRes.get())
+ isCompositeSub = true;
+ }
+ }
+ }
+ // An object which is sub-object of a composite object can not be accessible in column 1
+ if (isCompositeSub)
+ return Qt::ItemFlags();
+ }
+
+ aFlags |= Qt::ItemIsEnabled;
return aFlags;
}