void SceneTreeEditor::set_selected(Node *p_node,bool p_emit_selected) { ERR_FAIL_COND(blocked>0); if (pending_test_update) _test_update_tree(); if (tree_dirty) _update_tree(); if (selected==p_node) return; TreeItem* item=p_node?_find(tree->get_root(),p_node->get_path()):NULL; if (item) { item->select(0); item->set_as_cursor(0); selected=p_node; tree->ensure_cursor_is_visible(); } else { if (!p_node) selected=NULL; _update_tree(); selected=p_node; if (p_emit_selected) emit_signal("node_selected"); } }
void SceneTreeEditor::set_selected(Node *p_node, bool p_emit_selected) { ERR_FAIL_COND(blocked > 0); if (pending_test_update) _test_update_tree(); if (tree_dirty) _update_tree(); if (selected == p_node) return; TreeItem *item = p_node ? _find(tree->get_root(), p_node->get_path()) : NULL; if (item) { // make visible when it's collapsed TreeItem *node = item->get_parent(); while (node && node != tree->get_root()) { node->set_collapsed(false); node = node->get_parent(); } item->select(0); item->set_as_cursor(0); selected = p_node; tree->ensure_cursor_is_visible(); } else { if (!p_node) selected = NULL; _update_tree(); selected = p_node; if (p_emit_selected) emit_signal("node_selected"); } }