void HierarchyTreePlatformNode::SetSize(int width, int height) { this->width = width; this->height = height; for (HIERARCHYTREENODESLIST::iterator iter = childNodes.begin(); iter != childNodes.end(); ++iter) { HierarchyTreeNode* node = (*iter); HierarchyTreeScreenNode* screenNode = dynamic_cast<HierarchyTreeScreenNode*>(node); if (screenNode) { screenNode->GetScreen()->SetRect(Rect(0, 0, width, height)); } } }
void HierarchyTreeControlNode::SetParent(HierarchyTreeNode* node, HierarchyTreeNode* insertAfter) { if (this == insertAfter) return; if (parent) parent->RemoveTreeNode(this, false, false); HierarchyTreeControlNode* newParentControl = dynamic_cast<HierarchyTreeControlNode* >(node); HierarchyTreeScreenNode* newParentScreen = dynamic_cast<HierarchyTreeScreenNode* >(node); DVASSERT(newParentControl || newParentScreen); if (!newParentControl && !newParentScreen) return; UIControl* afterControl = NULL; HierarchyTreeControlNode* insertAfterControl = dynamic_cast<HierarchyTreeControlNode* >(insertAfter); if (insertAfterControl) afterControl = insertAfterControl->GetUIObject(); UIControl* newParentUI = NULL; if (newParentControl) newParentUI = newParentControl->GetUIObject(); else if (newParentScreen) newParentUI = newParentScreen->GetScreen(); node->AddTreeNode(this, insertAfter); if (newParentUI && uiObject) { if (insertAfter != node) { newParentUI->InsertChildAbove(uiObject, afterControl); } else { UIControl* belowControl = NULL; const List<UIControl*> & controls = newParentUI->GetChildren(); if (controls.size()) { belowControl = *controls.begin(); } newParentUI->InsertChildBelow(uiObject, belowControl); } } parent = node; }
void HierarchyTreeControlNode::AddControlToParent() { if (!parent) return; DVASSERT(uiObject); HierarchyTreeScreenNode* screenNode = dynamic_cast<HierarchyTreeScreenNode*>(parent); if (screenNode) { screenNode->GetScreen()->AddControl(this->uiObject); } else { //HierarchyTreeControlNode* controlNode = GetControlNode(); HierarchyTreeControlNode* controlNode = dynamic_cast<HierarchyTreeControlNode*>(parent); if (controlNode) { UIControl* control = controlNode->GetUIObject(); if (control) control->AddControl(this->uiObject); } } }
void HierarchyTreeControlNode::SetParent(HierarchyTreeNode* node, HierarchyTreeNode* insertAfter) { if (this == insertAfter) return; if (parent) parent->RemoveTreeNode(this, false, false); HierarchyTreeControlNode* newParentControl = dynamic_cast<HierarchyTreeControlNode* >(node); HierarchyTreeScreenNode* newParentScreen = dynamic_cast<HierarchyTreeScreenNode* >(node); DVASSERT(newParentControl || newParentScreen); if (!newParentControl && !newParentScreen) return; UIControl* afterControl = NULL; HierarchyTreeControlNode* insertAfterControl = dynamic_cast<HierarchyTreeControlNode* >(insertAfter); if (insertAfterControl) afterControl = insertAfterControl->GetUIObject(); UIControl* newParentUI = NULL; if (newParentControl) newParentUI = newParentControl->GetUIObject(); else if (newParentScreen) newParentUI = newParentScreen->GetScreen(); node->AddTreeNode(this, insertAfter); if (newParentUI && uiObject) { Rect controlAbsoluteRect = uiObject->GetRect(true); Rect parentAbsoluteRect = newParentUI->GetRect(true); if (insertAfter != node) { newParentUI->InsertChildAbove(uiObject, afterControl); } else { UIControl* belowControl = NULL; const List<UIControl*> & controls = newParentUI->GetChildren(); if (controls.size()) { belowControl = *controls.begin(); } newParentUI->InsertChildBelow(uiObject, belowControl); } // Recalculate the relative coords of the moved object to don't change its position. Vector2 newControlOffset = controlAbsoluteRect.GetPosition() - parentAbsoluteRect.GetPosition(); uiObject->SetRect(Rect(newControlOffset, uiObject->GetRect().GetSize())); // Fix // DF-2395 - Recalculate scrollContainer content each time we add controls to it UIScrollViewContainer *container = dynamic_cast<UIScrollViewContainer*>(newParentUI); if (container) { UIScrollView *scroll = dynamic_cast<UIScrollView*>(container->GetParent()); if (scroll) { scroll->RecalculateContentSize(); } } } parent = node; }