diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-07-02 16:26:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-02 16:26:40 +0200 |
commit | 84c68ebb11d7edef55893ff0e0de6a7355c34038 (patch) | |
tree | 89e4ab37fadb6f3629c0803d0fd4095cd6969481 | |
parent | 938e2c53ecad50b17bf8d1bfbf33d8a17d9a66a7 (diff) | |
parent | 81b6000812983ee6d113921bc62c47ebd8d5611f (diff) |
Merge pull request #40034 from hinlopen/fix-new-node-crash
Fix: Crash when trying to add new node
-rw-r--r-- | editor/scene_tree_dock.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index b8ac405f53..41b8baeb2f 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -354,11 +354,15 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { // Prefer nodes that inherit from the current scene root. Node *current_edited_scene_root = EditorNode::get_singleton()->get_edited_scene(); if (current_edited_scene_root) { - static const String preferred_types[] = { "Node2D", "Node3D", "Control" }; - - StringName root_class = current_edited_scene_root->get_class_name(); + String root_class = current_edited_scene_root->get_class_name(); + static Vector<String> preferred_types; + if (preferred_types.empty()) { + preferred_types.push_back("Control"); + preferred_types.push_back("Node2D"); + preferred_types.push_back("Node3D"); + } - for (int i = 0; i < preferred_types->size(); i++) { + for (int i = 0; i < preferred_types.size(); i++) { if (ClassDB::is_parent_class(root_class, preferred_types[i])) { create_dialog->set_preferred_search_result_type(preferred_types[i]); break; |