Browse Source

Hide Node dock successfully on undo/redo and deletion

Fixes #84530.

(cherry picked from commit da84489b27dedbe480a2ffcf9dbb60a68775cf66)
kevmorg 1 year ago
parent
commit
8633f7bcdb
2 changed files with 12 additions and 2 deletions
  1. 11 2
      editor/node_dock.cpp
  2. 1 0
      editor/node_dock.h

+ 11 - 2
editor/node_dock.cpp

@@ -67,14 +67,23 @@ void NodeDock::update_lists() {
 	connections->update_tree();
 	connections->update_tree();
 }
 }
 
 
+void NodeDock::_on_node_tree_exited() {
+	set_node(nullptr);
+}
+
 void NodeDock::set_node(Node *p_node) {
 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);
 	connections->set_node(p_node);
 	groups->set_current(p_node);
 	groups->set_current(p_node);
+
 	if (p_node) {
 	if (p_node) {
 		last_valid_node = 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()) {
 		if (connections_button->is_pressed()) {
 			connections->show();
 			connections->show();
 		} else {
 		} else {

+ 1 - 0
editor/node_dock.h

@@ -58,6 +58,7 @@ public:
 protected:
 protected:
 	static void _bind_methods();
 	static void _bind_methods();
 	void _notification(int p_what);
 	void _notification(int p_what);
+	void _on_node_tree_exited();
 
 
 public:
 public:
 	void set_node(Node *p_node);
 	void set_node(Node *p_node);