if (aNew)
data()->reflist(FEATURES_ID())->append(aNew);
// set as current also after it becomes sub to set correctly enabled for other subs
- document()->setCurrentFeature(aNew, false);
+ //document()->setCurrentFeature(aNew, false);
return aNew;
}
int ExchangePlugin_ImportFeature::numberOfSubs(bool forTree) const
{
- if (forTree)
- return 0;
return data()->reflist(FEATURES_ID())->size(false);
}
std::shared_ptr<ModelAPI_Feature> ExchangePlugin_ImportFeature::subFeature(
const int theIndex, bool forTree)
{
- if (forTree)
- return FeaturePtr();
-
ObjectPtr anObj = data()->reflist(FEATURES_ID())->object(theIndex, false);
FeaturePtr aRes = std::dynamic_pointer_cast<ModelAPI_Feature>(anObj);
return aRes;
FeaturePtr aFeature = feature(aRefs->Value(a));
if (aFeature.get()) {
// if feature is in sub-component, remove it from history: it is in sub-tree of sub-component
- if (!ModelAPI_Tools::compositeOwner(aFeature).get()) {
- if (isFeature) { // here may be also disabled features
- if (aFeature->isInHistory()) {
- aResult.push_back(aFeature);
- }
- } else if (!aFeature->isDisabled()) { // iterate all results of not-disabled feature
+ bool isSub = ModelAPI_Tools::compositeOwner(aFeature).get() != NULL;
+ if (isFeature) { // here may be also disabled features
+ if (!isSub && aFeature->isInHistory()) {
+ aResult.push_back(aFeature);
+ }
+ } else if (!aFeature->isDisabled()) { // iterate all results of not-disabled feature
+ // construction results of sub-features should not be in the tree
+ if (!isSub || theGroupID != ModelAPI_ResultConstruction::group()) {
// do not use reference to the list here since results can be changed by "isConcealed"
const std::list<std::shared_ptr<ModelAPI_Result> > aResults = aFeature->results();
std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aRIter = aResults.begin();