- ModelAPI_Object* aParentObj = (ModelAPI_Object*)theParent.internalPointer();
-
- // Check for Part feature
- ResultPartPtr aPartRes = getPartResult(aParentObj);
- if (aPartRes.get()) {
- DocumentPtr aSubDoc = aPartRes->partDoc();
- int aNbSubFolders = foldersCount(aSubDoc.get());
- if (theRow < aNbSubFolders) { // Create a Folder of sub-document
- return createIndex(theRow, theColumn, aSubDoc.get());
+ // It is an object which could have children
+ ModelAPI_Document* aDoc = getSubDocument(theParent.internalPointer());
+ if (aDoc) {
+ // It is a folder of sub-document
+ std::string aType = myXMLReader.subFolderType(aParentPos);
+ if (theRow < aDoc->size(aType)) {
+ ObjectPtr aObj = aDoc->object(aType, theRow);
+ aIndex = objectIndex(aObj);
+ }
+ } else {
+ ModelAPI_Object* aParentObj = (ModelAPI_Object*)theParent.internalPointer();
+
+ // Check for Part feature
+ ResultPartPtr aPartRes = getPartResult(aParentObj);
+ if (aPartRes.get()) {
+ DocumentPtr aSubDoc = aPartRes->partDoc();
+ int aNbSubFolders = foldersCount(aSubDoc.get());
+ if (theRow < aNbSubFolders) { // Create a Folder of sub-document
+ aIndex = createIndex(theRow, theColumn, aSubDoc.get());
+ } else {
+ // this is an object under sub document root
+ std::string aType = myXMLReader.subType();
+ ObjectPtr aObj = aSubDoc->object(aType, theRow - aNbSubFolders);
+ aIndex = objectIndex(aObj);
+ }