diff options
-rw-r--r-- | editor/node_dock.cpp | 13 | ||||
-rw-r--r-- | editor/node_dock.h | 1 |
2 files changed, 12 insertions, 2 deletions
diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp index 680e77fe42..db4f5a67e5 100644 --- a/editor/node_dock.cpp +++ b/editor/node_dock.cpp @@ -67,14 +67,23 @@ void NodeDock::update_lists() { connections->update_tree(); } +void NodeDock::_on_node_tree_exited() { + set_node(nullptr); +} + void NodeDock::set_node(Node *p_node) { + if (last_valid_node) { + last_valid_node->disconnect("tree_exited", callable_mp(this, &NodeDock::_on_node_tree_exited)); + last_valid_node = nullptr; + } + connections->set_node(p_node); groups->set_current(p_node); + if (p_node) { last_valid_node = p_node; - } + last_valid_node->connect("tree_exited", callable_mp(this, &NodeDock::_on_node_tree_exited)); - if (p_node) { if (connections_button->is_pressed()) { connections->show(); } else { diff --git a/editor/node_dock.h b/editor/node_dock.h index cc22171453..41495ffead 100644 --- a/editor/node_dock.h +++ b/editor/node_dock.h @@ -58,6 +58,7 @@ public: protected: static void _bind_methods(); void _notification(int p_what); + void _on_node_tree_exited(); public: void set_node(Node *p_node); |