summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2022-07-04 23:54:06 +0200
committerGitHub <noreply@github.com>2022-07-04 23:54:06 +0200
commit100d2237361004bd053aaf1b6d63ad3068d6272e (patch)
tree5a90ac1c704cde72c9960706d5e92b6bc964dfd8
parent344b42703bab951dbc8c0e7763740ac6b3dfad79 (diff)
parent31745a8b15443a28b8d8c90d408ebb47913342a1 (diff)
Merge pull request #62692 from Nolkaloid/typesafe-nodepath-dnd
Fix drag'n drop type checking for NodePaths
-rw-r--r--editor/editor_properties.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index 70622e85ff..6a035225e5 100644
--- a/editor/editor_properties.cpp
+++ b/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() {