| 592 | } |
| 593 | |
| 594 | void Node::moveToParent(Node* parent) { |
| 595 | AssertIf(parent == nullptr, "can not move node to an invalid parent (nullptr)."); |
| 596 | if (_parent == parent) return; |
| 597 | if (_parent) { |
| 598 | auto childRef = Value::alloc(this); |
| 599 | if (_parent->_children->remove(childRef.get())) { |
| 600 | if (!parent->_children) { |
| 601 | parent->_children = Array::create(); |
| 602 | } |
| 603 | Node* last = nullptr; |
| 604 | if (!parent->_children->isEmpty()) { |
| 605 | last = parent->_children->getLast()->to<Node>(); |
| 606 | } |
| 607 | parent->_children->add(Value::alloc(this)); |
| 608 | if (last && last->getOrder() > getOrder()) { |
| 609 | parent->_flags.setOn(Node::Reorder); |
| 610 | } |
| 611 | _parent = parent; |
| 612 | updateRealColor3(); |
| 613 | updateRealOpacity(); |
| 614 | markDirty(); |
| 615 | } |
| 616 | } else { |
| 617 | parent->addChild(this); |
| 618 | } |
| 619 | } |
| 620 | |
| 621 | void Node::cleanup() { |
| 622 | if (_flags.isOff(Node::Cleanup)) { |