aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobfram2018-03-12 21:28:41 +0100
committerHein-Pieter van Braam2018-04-28 17:04:20 +0200
commit141e389c3f80dcb71bbf86c67b9d2ea83652fa0c (patch)
treee1bdc02b3d02dc9ce12a707028d9526fb1af792d
parent72350eebb29b9c08be0a0d38e3e5e819c1b31d62 (diff)
downloadgodot-141e389c3f80dcb71bbf86c67b9d2ea83652fa0c.tar.gz
godot-141e389c3f80dcb71bbf86c67b9d2ea83652fa0c.tar.zst
godot-141e389c3f80dcb71bbf86c67b9d2ea83652fa0c.zip
Fix non working action names containing whitespaces
Now the action name is quoted if it contains spaces. Also, quotation mark (") is added to the forbidden character list for action names, as it was also a bug. Fix #17322 (cherry picked from commit ea94a8259624a1915fa4b92682755e28f2bb6af5)
-rw-r--r--core/project_settings.cpp5
-rw-r--r--editor/project_settings_editor.cpp8
2 files changed, 8 insertions, 5 deletions
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index 427fa77e6..3eb8ad7bf 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -692,7 +692,10 @@ Error ProjectSettings::_save_settings_text(const String &p_file, const Map<Strin
String vstr;
VariantWriter::write_to_string(value, vstr);
- file->store_string(F->get() + "=" + vstr + "\n");
+ if (F->get().find(" ") != -1)
+ file->store_string(F->get().quote() + "=" + vstr + "\n");
+ else
+ file->store_string(F->get() + "=" + vstr + "\n");
}
}
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 9625bc19c..096d9c1a9 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -137,12 +137,12 @@ void ProjectSettingsEditor::_action_edited() {
if (new_name == old_name)
return;
- if (new_name.find("/") != -1 || new_name.find(":") != -1 || new_name == "") {
+ if (new_name.find("/") != -1 || new_name.find(":") != -1 || new_name.find("\"") != -1 || new_name == "") {
ti->set_text(0, old_name);
add_at = "input/" + old_name;
- message->set_text(TTR("Invalid action (anything goes but '/' or ':')."));
+ message->set_text(TTR("Invalid action (anything goes but '/', ':' or '\"')."));
message->popup_centered(Size2(300, 100) * EDSCALE);
return;
}
@@ -830,9 +830,9 @@ void ProjectSettingsEditor::_action_check(String p_action) {
action_add->set_disabled(true);
} else {
- if (p_action.find("/") != -1 || p_action.find(":") != -1) {
+ if (p_action.find("/") != -1 || p_action.find(":") != -1 || p_action.find("\"") != -1) {
- action_add_error->set_text(TTR("Can't contain '/' or ':'"));
+ action_add_error->set_text(TTR("Can't contain '/', ':' or '\"'"));
action_add_error->show();
action_add->set_disabled(true);
return;