void ItemTreeViewImpl::copySelectedItemsSub(Item* item, ItemPtr& duplicated, set<Item*>& items) { for(Item* childItem = item->childItem(); childItem; childItem = childItem->nextItem()){ set<Item*>::iterator p = items.find(childItem); if(p != items.end()){ ItemPtr duplicatedChild; if(childItem->isSubItem()){ duplicatedChild = duplicated->findItem(childItem->name()); } else { duplicatedChild = childItem->duplicate(); if(duplicatedChild){ duplicated->addChildItem(duplicatedChild); } } if(duplicatedChild){ copySelectedItemsSub(childItem, duplicatedChild, items); } } } }