Prevent crash attaching a script with no languages registered

(cherry picked from commit 52f3cfca6f)
This commit is contained in:
Andrii Doroshenko (Xrayez) 2020-05-31 20:31:45 +03:00 committed by Rémi Verschelde
parent 424d1b5fab
commit 3649c61e46
2 changed files with 9 additions and 3 deletions

View File

@ -2591,6 +2591,11 @@ void SceneTreeDock::_focus_node() {
} }
void SceneTreeDock::attach_script_to_selected(bool p_extend) { void SceneTreeDock::attach_script_to_selected(bool p_extend) {
if (ScriptServer::get_language_count() == 0) {
EditorNode::get_singleton()->show_warning(TTR("Cannot attach a script: there are no languages registered.\nThis is probably because this editor was built with all language modules disabled."));
return;
}
if (!profile_allow_script_editing) { if (!profile_allow_script_editing) {
return; return;
} }

View File

@ -800,7 +800,7 @@ ScriptCreateDialog::ScriptCreateDialog() {
gc->add_child(memnew(Label(TTR("Language:")))); gc->add_child(memnew(Label(TTR("Language:"))));
gc->add_child(language_menu); gc->add_child(language_menu);
default_language = 0; default_language = -1;
for (int i = 0; i < ScriptServer::get_language_count(); i++) { for (int i = 0; i < ScriptServer::get_language_count(); i++) {
String lang = ScriptServer::get_language(i)->get_name(); String lang = ScriptServer::get_language(i)->get_name();
@ -809,8 +809,9 @@ ScriptCreateDialog::ScriptCreateDialog() {
default_language = i; default_language = i;
} }
} }
if (default_language >= 0) {
language_menu->select(default_language); language_menu->select(default_language);
}
current_language = default_language; current_language = default_language;
language_menu->connect("item_selected", this, "_lang_changed"); language_menu->connect("item_selected", this, "_lang_changed");