summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorMarcel Admiraal <madmiraal@users.noreply.github.com>2021-12-28 17:08:06 +0000
committerMarcel Admiraal <madmiraal@users.noreply.github.com>2022-01-12 15:19:18 +0000
commit5737e7dd2dac03e04d1c17cb1f4afedc956b48e2 (patch)
tree8d0e19610961b4d22a5e7557a8eb55fe33044ab7 /editor
parenta7839df8698058ae207929d7542ef75a0954104b (diff)
Check if action name exists before adding it or renaming an action to it
Diffstat (limited to 'editor')
-rw-r--r--editor/action_map_editor.cpp20
-rw-r--r--editor/action_map_editor.h1
-rw-r--r--editor/project_settings_editor.cpp12
3 files changed, 25 insertions, 8 deletions
diff --git a/editor/action_map_editor.cpp b/editor/action_map_editor.cpp
index eabe0a95e2..96d9ab1064 100644
--- a/editor/action_map_editor.cpp
+++ b/editor/action_map_editor.cpp
@@ -760,12 +760,26 @@ void ActionMapEditor::_add_action_pressed() {
_add_action(add_edit->get_text());
}
+bool ActionMapEditor::_has_action(const String &p_name) const {
+ for (const ActionInfo &action_info : actions_cache) {
+ if (p_name == action_info.name) {
+ return true;
+ }
+ }
+ return false;
+}
+
void ActionMapEditor::_add_action(const String &p_name) {
if (p_name.is_empty() || !_is_action_name_valid(p_name)) {
show_message(TTR("Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or '\"'"));
return;
}
+ if (_has_action(p_name)) {
+ show_message(vformat(TTR("An action with the name '%s' already exists."), p_name));
+ return;
+ }
+
add_edit->clear();
emit_signal(SNAME("action_added"), p_name);
}
@@ -791,6 +805,12 @@ void ActionMapEditor::_action_edited() {
return;
}
+ if (_has_action(new_name)) {
+ ti->set_text(0, old_name);
+ show_message(vformat(TTR("An action with the name '%s' already exists."), new_name));
+ return;
+ }
+
emit_signal(SNAME("action_renamed"), old_name, new_name);
} else if (action_tree->get_selected_column() == 1) {
// Deadzone Edited
diff --git a/editor/action_map_editor.h b/editor/action_map_editor.h
index cf2d871469..e61d1a334a 100644
--- a/editor/action_map_editor.h
+++ b/editor/action_map_editor.h
@@ -168,6 +168,7 @@ private:
void _event_config_confirmed();
void _add_action_pressed();
+ bool _has_action(const String &p_name) const;
void _add_action(const String &p_name);
void _action_edited();
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index b710eb2546..1bf6243bcc 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -275,10 +275,8 @@ void ProjectSettingsEditor::_editor_restart_close() {
void ProjectSettingsEditor::_action_added(const String &p_name) {
String name = "input/" + p_name;
- if (ProjectSettings::get_singleton()->has_setting(name)) {
- action_map->show_message(vformat(TTR("An action with the name '%s' already exists."), name));
- return;
- }
+ ERR_FAIL_COND_MSG(ProjectSettings::get_singleton()->has_setting(name),
+ "An action with this name already exists.");
Dictionary action;
action["events"] = Array();
@@ -351,10 +349,8 @@ void ProjectSettingsEditor::_action_renamed(const String &p_old_name, const Stri
const String old_property_name = "input/" + p_old_name;
const String new_property_name = "input/" + p_new_name;
- if (ProjectSettings::get_singleton()->has_setting(new_property_name)) {
- action_map->show_message(vformat(TTR("An action with the name '%s' already exists."), new_property_name));
- return;
- }
+ ERR_FAIL_COND_MSG(ProjectSettings::get_singleton()->has_setting(new_property_name),
+ "An action with this name already exists.");
int order = ProjectSettings::get_singleton()->get_order(old_property_name);
Dictionary action = ProjectSettings::get_singleton()->get(old_property_name);