diff options
author | Marcel Admiraal <madmiraal@users.noreply.github.com> | 2021-12-28 17:08:06 +0000 |
---|---|---|
committer | Marcel Admiraal <madmiraal@users.noreply.github.com> | 2022-01-12 15:19:18 +0000 |
commit | 5737e7dd2dac03e04d1c17cb1f4afedc956b48e2 (patch) | |
tree | 8d0e19610961b4d22a5e7557a8eb55fe33044ab7 /editor | |
parent | a7839df8698058ae207929d7542ef75a0954104b (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.cpp | 20 | ||||
-rw-r--r-- | editor/action_map_editor.h | 1 | ||||
-rw-r--r-- | editor/project_settings_editor.cpp | 12 |
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); |