void copyTree(VisualNode* node_t, NodeTree& tree_t, const VisualNode* node_s, const NodeTree& tree_s) { auto& na_t = tree_t.getNA(); const auto& na_s = tree_s.getNA(); stack<VisualNode*> stk_t; stack<const VisualNode*> stk_s; stk_s.push(node_s); stk_t.push(node_t); while (stk_s.size() > 0) { const VisualNode* n = stk_s.top(); stk_s.pop(); VisualNode* next = stk_t.top(); stk_t.pop(); auto kids = n->getNumberOfChildren(); next->setNumberOfChildren(kids, na_t); next->setStatus(n->getStatus()); next->dirtyUp(na_t); for (auto i = 0u; i < kids; ++i) { stk_s.push(n->getChild(na_s, i)); stk_t.push(next->getChild(na_t, i)); } } }
forceinline void UnstopAllCursor::processCurrentNode(void) { VisualNode* n = node(); if (n->getStatus() == STOP) { n->setStop(false); n->dirtyUp(na); } }
forceinline void UnhideAllCursor::processCurrentNode(void) { VisualNode* n = node(); if (n->isHidden()) { n->setHidden(false); n->dirtyUp(na); } }
forceinline void HideFailedCursor::processCurrentNode(void) { VisualNode* n = node(); if (n->getStatus() == BRANCH && !n->hasSolvedChildren() && n->getNoOfOpenChildren(na) == 0) { n->setHidden(true); n->setChildrenLayoutDone(false); n->dirtyUp(na); } }