فهرست منبع

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

Fix drag'n drop type checking for NodePaths
Rémi Verschelde 3 سال پیش
والد
کامیت
100d223736
1فایلهای تغییر یافته به همراه14 افزوده شده و 1 حذف شده
  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;
 		return false;
 	}
 	}
 	Array nodes = p_drag_data["nodes"];
 	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() {
 void EditorPropertyNodePath::update_property() {