From 141e389c3f80dcb71bbf86c67b9d2ea83652fa0c Mon Sep 17 00:00:00 2001 From: robfram Date: Mon, 12 Mar 2018 21:28:41 +0100 Subject: [PATCH] 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) --- core/project_settings.cpp | 5 ++++- editor/project_settings_editor.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/core/project_settings.cpp b/core/project_settings.cpp index 427fa77e626..3eb8ad7bf5a 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 Mapstore_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 9625bc19c04..096d9c1a903 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;