diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index c97ae197d903..c7ff543b6643 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -396,6 +396,10 @@
If [code]true[/code], automatically updates animation tracks' target paths when renaming or reparenting nodes in the Scene tree dock.
+
+ If [code]true[/code], display a confirmation dialog when adding a new track to an animation by pressing the "key" icon next to a property. Holding Shift will bypass the dialog.
+ If [code]false[/code], the behavior is reversed, i.e. the dialog only appears when Shift is held.
+
If [code]true[/code], create a Bezier track instead of a standard track when pressing the "key" icon next to a property. Bezier tracks provide more control over animation curves, but are more difficult to adjust quickly.
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index 9c7c2750536b..6810b802a1c4 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -3867,15 +3867,23 @@ void AnimationTrackEditor::commit_insert_queue() {
}
// Skip the confirmation dialog if the user holds Shift while clicking the key icon.
- if (!Input::get_singleton()->is_key_pressed(Key::SHIFT) && num_tracks > 0) {
- String shortcut_hint = TTR("Hold Shift when clicking the key icon to skip this dialog.");
+ // If `confirm_insert_track` editor setting is disabled, the behavior is reversed.
+ bool confirm_insert = EDITOR_GET("editors/animation/confirm_insert_track");
+ if ((Input::get_singleton()->is_key_pressed(Key::SHIFT) != confirm_insert) && num_tracks > 0) {
+ String dialog_text;
+
// Potentially a new key, does not exist.
if (num_tracks == 1) {
// TRANSLATORS: %s will be replaced by a phrase describing the target of track.
- insert_confirm_text->set_text(vformat(TTR("Create new track for %s and insert key?") + "\n\n" + shortcut_hint, last_track_query));
+ dialog_text = vformat(TTR("Create new track for %s and insert key?"), last_track_query);
} else {
- insert_confirm_text->set_text(vformat(TTR("Create %d new tracks and insert keys?") + "\n\n" + shortcut_hint, num_tracks));
+ dialog_text = vformat(TTR("Create %d new tracks and insert keys?"), num_tracks);
+ }
+
+ if (confirm_insert) {
+ dialog_text += +"\n\n" + TTR("Hold Shift when clicking the key icon to skip this dialog.");
}
+ insert_confirm_text->set_text(dialog_text);
insert_confirm_bezier->set_visible(all_bezier);
insert_confirm_reset->set_visible(reset_allowed);
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 85e60df1dd32..5d3cc80da9a0 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -786,6 +786,7 @@ void EditorSettings::_load_defaults(Ref p_extra_config) {
// Animation
_initial_set("editors/animation/autorename_animation_tracks", true);
+ _initial_set("editors/animation/confirm_insert_track", true);
_initial_set("editors/animation/default_create_bezier_tracks", false);
_initial_set("editors/animation/default_create_reset_tracks", true);
_initial_set("editors/animation/onion_layers_past_color", Color(1, 0, 0));