diff options
author | kevmorg <kevmorg@umich.edu> | 2023-12-02 15:55:46 -0500 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-12-12 10:26:05 +0100 |
commit | da84489b27dedbe480a2ffcf9dbb60a68775cf66 (patch) | |
tree | b0bc2876332d9bcbe09f6c1400259da4ec761923 | |
parent | 15a03ed98e63590c85dac62405d785e1b7ca7fed (diff) | |
download | redot-engine-da84489b27dedbe480a2ffcf9dbb60a68775cf66.tar.gz |
Hide Node dock successfully on undo/redo and deletion
Fixes #84530.
-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); |