summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-06-03 11:08:35 +0200
committerGitHub <noreply@github.com>2020-06-03 11:08:35 +0200
commitcec49bd194bf42d04bb5b35b0e807fea15b896a0 (patch)
tree6268e9e8ebb1f45f5036e23699ed251257a97824
parent4749437b23cc5ef9ae41fc66fbbf44246066ff1e (diff)
parent52f3cfca6f06b2bb8364049eda345366915c60b8 (diff)
Merge pull request #39203 from Xrayez/fix-no-lang-crash
Prevent crash attaching a script with no languages registered
-rw-r--r--editor/scene_tree_dock.cpp5
-rw-r--r--editor/script_create_dialog.cpp7
2 files changed, 9 insertions, 3 deletions
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index a81a2ff4e9..c37d32b26b 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -2557,6 +2557,11 @@ void SceneTreeDock::_focus_node() {
}
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) {
return;
}
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index 04fbfdff9d..ae5229b628 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -783,7 +783,7 @@ ScriptCreateDialog::ScriptCreateDialog() {
gc->add_child(memnew(Label(TTR("Language:"))));
gc->add_child(language_menu);
- default_language = 0;
+ default_language = -1;
for (int i = 0; i < ScriptServer::get_language_count(); i++) {
String lang = ScriptServer::get_language(i)->get_name();
language_menu->add_item(lang);
@@ -791,8 +791,9 @@ ScriptCreateDialog::ScriptCreateDialog() {
default_language = i;
}
}
-
- language_menu->select(default_language);
+ if (default_language >= 0) {
+ language_menu->select(default_language);
+ }
current_language = default_language;
language_menu->connect("item_selected", callable_mp(this, &ScriptCreateDialog::_lang_changed));