void HierarchyTreeAggregatorNode::UpdateChilds() { for (CHILDS::iterator iter = childs.begin(); iter != childs.end(); ++iter) { HierarchyTreeControlNode* controlNode = (*iter); UIAggregatorControl* aggregatorControl = dynamic_cast<UIAggregatorControl*>(controlNode->GetUIObject()); DVASSERT(aggregatorControl); if (!aggregatorControl) continue; // Remove any child controls of UIControl to prevent appearance of deleted // child in case when screen child is aggregator. /*List<UIControl*> aggregatorChilds = aggregatorControl->GetChildren(); int size = GetScreen()->GetChildren().size(); for (List<UIControl*>::iterator iter = aggregatorChilds.begin(); iter != aggregatorChilds.end();) { if (--size < 0) break; UIControl* child = (*iter); ++iter; aggregatorControl->RemoveControl(child); }*/ aggregatorControl->RemoveAllControls(); const List<UIControl*> & childsList = screen->GetChildren(); UIControl* belowControl = NULL; List<UIControl*>::const_iterator belowIter = aggregatorControl->GetChildren().begin(); if (belowIter != aggregatorControl->GetChildren().end()) belowControl = (*belowIter); for (List<UIControl*>::const_iterator iter = childsList.begin(); iter != childsList.end(); ++iter) { UIControl* control = (*iter); UIControl* newControl = control->Clone(); aggregatorControl->InsertChildBelow(newControl, belowControl); aggregatorControl->AddAggregatorChild(newControl); } //aggregatorControl->SetSize(screen->GetSize()); TODO:// update child size aggregatorControl->SetRect(aggregatorControl->GetRect()); //update childs size and position } }