}
if (theContext->groupName() == ModelAPI_ResultBody::group()) {
// do not select the whole shape for body:it is already must be in the data framework
- if (theContext->shape().get() && theContext->shape()->isEqual(theSubShape)) {
+ // equal and null selected objects mean the same: object is equal to context,
+ // TODO: synchronize with GUI later that it must be null always
+ if (theContext->shape().get() &&
+ (theContext->shape()->isEqual(theSubShape) || !theSubShape.get())) {
aSelLab.ForgetAllAttributes(true);
TDataStd_UAttribute::Set(aSelLab, kSIMPLE_REF_ID);
} else {
TDF_Label aSelLab = selectionLabel();
if (aSelLab.IsAttribute(kSIMPLE_REF_ID)) { // it is just reference to shape, not sub-shape
ResultPtr aContext = context();
- if (!aContext.get())
- return false;
+ return aContext.get();
}
if (aSelLab.IsAttribute(kCONSTUCTION_SIMPLE_REF_ID)) { // it is just reference to construction, nothing is in value
- return false;
+ return true;
}
Handle(TNaming_NamedShape) aSelection;
}
TopoDS_Shape aNewShape = theSubShape ? theSubShape->impl<TopoDS_Shape>() : aContext;
/// fix for issue 411: result modified shapes must not participate in this selection mechanism
+ /*
FeaturePtr aFeatureOwner = std::dynamic_pointer_cast<ModelAPI_Feature>(owner());
if (aFeatureOwner.get())
aFeatureOwner->eraseResults();
+ */
if (!aContext.IsNull()) {
aSel.Select(aNewShape, aContext);
}