diff --git a/tools/editor/create_dialog.cpp b/tools/editor/create_dialog.cpp index 060998c19aa..47411f0cdd2 100644 --- a/tools/editor/create_dialog.cpp +++ b/tools/editor/create_dialog.cpp @@ -36,6 +36,7 @@ #if 1 #include "os/keyboard.h" +#include "editor_settings.h" #include "editor_help.h" @@ -108,6 +109,18 @@ void CreateDialog::add_type(const String& p_type,HashMap& p_ty } + if (bool(EditorSettings::get_singleton()->get("scenetree_editor/start_create_dialog_fully_expanded"))) { + item->set_collapsed(false); + } else { + // don't collapse search results + bool collapse = (search_box->get_text() == ""); + // don't collapse the root node + collapse &= (item != p_root); + // don't collapse abstract nodes on the first tree level + collapse &= ((parent != p_root) || (ObjectTypeDB::can_instance(p_type))); + item->set_collapsed(collapse); + } + const String& description = EditorHelp::get_doc_data()->class_list[p_type].brief_description; item->set_tooltip(0,description); diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index f25ac6754f9..d7ed59fde1a 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -517,6 +517,7 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { set("scenetree_editor/duplicate_node_name_num_separator",0); hints["scenetree_editor/duplicate_node_name_num_separator"]=PropertyInfo(Variant::INT,"scenetree_editor/duplicate_node_name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash"); + set("scenetree_editor/start_create_dialog_fully_expanded",false); set("gridmap_editor/pick_distance", 5000.0);