Procházet zdrojové kódy

Merge pull request #62692 from Nolkaloid/typesafe-nodepath-dnd

Fix drag'n drop type checking for NodePaths
Rémi Verschelde před 3 roky
rodič
revize
100d223736
1 změnil soubory, kde provedl 14 přidání a 1 odebrání
  1. 14 1
      editor/editor_properties.cpp

+ 14 - 1
editor/editor_properties.cpp

@@ -3175,7 +3175,20 @@ bool EditorPropertyNodePath::is_drop_valid(const Dictionary &p_drag_data) const
 		return false;
 	}
 	Array nodes = p_drag_data["nodes"];
-	return nodes.size() == 1;
+	if (nodes.size() != 1) {
+		return false;
+	}
+
+	Node *dropped_node = get_tree()->get_edited_scene_root()->get_node(nodes[0]);
+	ERR_FAIL_NULL_V(dropped_node, false);
+
+	for (const StringName &E : valid_types) {
+		if (dropped_node->is_class(E)) {
+			return true;
+		}
+	}
+
+	return false;
 }
 
 void EditorPropertyNodePath::update_property() {