| 619 | } |
| 620 | |
| 621 | void Node::cleanup() { |
| 622 | if (_flags.isOff(Node::Cleanup)) { |
| 623 | _flags.setOn(Node::Cleanup); |
| 624 | post("Cleanup"_slice); |
| 625 | _signal = nullptr; |
| 626 | ARRAY_START(Node, child, _children) { |
| 627 | child->cleanup(); |
| 628 | } |
| 629 | ARRAY_END |
| 630 | unschedule(); |
| 631 | unscheduleUpdate(); |
| 632 | stopActionInList(_action); |
| 633 | if (_updateItem) { |
| 634 | _updateItem->renderFuncs = nullptr; |
| 635 | _updateItem->scheduledMainFunc = nullptr; |
| 636 | _updateItem->scheduledThreadFuncs.clear(); |
| 637 | } |
| 638 | if (_userData) { |
| 639 | _userData->clear(); |
| 640 | } |
| 641 | if (_flags.isOn(Node::KeyboardEnabled)) { |
| 642 | setKeyboardEnabled(false); |
| 643 | } |
| 644 | if (_flags.isOn(Node::ControllerEnabled)) { |
| 645 | setControllerEnabled(false); |
| 646 | } |
| 647 | if (_grabber) { |
| 648 | _grabber->cleanup(); |
| 649 | _grabber = nullptr; |
| 650 | } |
| 651 | _parent = nullptr; |
| 652 | Object::cleanup(); |
| 653 | } |
| 654 | } |
| 655 | |
| 656 | Node* Node::getChildByTag(String tag) { |
| 657 | Node* targetNode = nullptr; |
no test coverage detected