diff --git a/doc/classes/EditorUndoRedoManager.xml b/doc/classes/EditorUndoRedoManager.xml index ae46a2c0ace..fe5398692bf 100644 --- a/doc/classes/EditorUndoRedoManager.xml +++ b/doc/classes/EditorUndoRedoManager.xml @@ -73,7 +73,7 @@ - Clears the given undo history. You can clear history for a specific scene, global history, or for all scenes at once if [param id] is [constant INVALID_HISTORY]. + Clears the given undo history. You can clear history for a specific scene, global history, or for all histories at once (except [constant REMOTE_HISTORY]) if [param id] is [constant INVALID_HISTORY]. If [param increase_version] is [code]true[/code], the undo history version will be increased, marking it as unsaved. Useful for operations that modify the scene, but don't support undo. [codeblock] var scene_root = EditorInterface.get_edited_scene_root() diff --git a/editor/editor_undo_redo_manager.cpp b/editor/editor_undo_redo_manager.cpp index 17be09819ae..84820c8e2d1 100644 --- a/editor/editor_undo_redo_manager.cpp +++ b/editor/editor_undo_redo_manager.cpp @@ -447,8 +447,13 @@ void EditorUndoRedoManager::clear_history(int p_idx, bool p_increase_version) { return; } - for (const KeyValue &E : history_map) { + for (KeyValue &E : history_map) { + if (E.key == REMOTE_HISTORY) { + continue; + } E.value.undo_redo->clear_history(p_increase_version); + E.value.undo_stack.clear(); + E.value.redo_stack.clear(); set_history_as_saved(E.key); } emit_signal(SNAME("history_changed"));