diff --git a/editor/editor_settings_dialog.cpp b/editor/editor_settings_dialog.cpp index 877b18697b6..2c71d5f482a 100644 --- a/editor/editor_settings_dialog.cpp +++ b/editor/editor_settings_dialog.cpp @@ -349,7 +349,10 @@ void EditorSettingsDialog::_update_shortcut_events(const String &p_path, const A Ref current_sc = EditorSettings::get_singleton()->get_shortcut(p_path); EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton(); - undo_redo->create_action(vformat(TTR("Edit Shortcut: %s"), p_path)); + undo_redo->create_action(vformat(TTR("Edit Shortcut: %s"), p_path), UndoRedo::MERGE_DISABLE, EditorSettings::get_singleton()); + // History must be fixed based on the EditorSettings object because current_sc would + // incorrectly make this action use the scene history. + undo_redo->force_fixed_history(); undo_redo->add_do_method(current_sc.ptr(), "set_events", p_events); undo_redo->add_undo_method(current_sc.ptr(), "set_events", current_sc->get_events()); undo_redo->add_do_method(EditorSettings::get_singleton(), "mark_setting_changed", "shortcuts");