| 
					
				 | 
			
			
				@@ -228,13 +228,21 @@ void ctkXnatObject::add(ctkXnatObject* child) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     child->d_func()->parent = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!d->children.contains(child)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  bool childExists (false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  foreach (ctkXnatObject* existingChild, d->children) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    d->children.push_back(child); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ((existingChild->id().length() != 0 && existingChild->id() == child->id()) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (existingChild->id().length() == 0 && existingChild->name() == child->name())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      d->children.replace(d->children.indexOf(existingChild), child); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      childExists = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      qWarning() << "ctkXnatObject::add(): Child already exists -> Replaced child!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!childExists) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    qWarning() << "ctkXnatObject::add(): Child already exists"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    d->children.push_back(child); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |