EditorUndoRedoManager

Inherits: RefCounted < Object

Manages undo history of scenes opened in the editor.

Description

EditorUndoRedoManager is a manager for UndoRedo objects associated with edited scenes. Each scene has its own undo history and EditorUndoRedoManager ensures that each action performed in the editor gets associated with a proper scene. For actions not related to scenes (ProjectSettings edits, external resources, etc.), a separate global history is used.

The usage is mostly the same as UndoRedo. You create and commit actions and the manager automatically decides under-the-hood what scenes it belongs to. The scene is deduced based on the first operation in an action, using the object from the operation. The rules are as follows:

  • If the object is a Node, use the currently edited scene;

  • If the object is a built-in resource, use the scene from its path;

  • If the object is external resource or anything else, use global history.

This guessing can sometimes yield false results, so you can provide a custom context object when creating an action.

Methods

void

add_do_method ( Object object, StringName method, ... ) vararg

void

add_do_property ( Object object, StringName property, Variant value )

void

add_do_reference ( Object object )

void

add_undo_method ( Object object, StringName method, ... ) vararg

void

add_undo_property ( Object object, StringName property, Variant value )

void

add_undo_reference ( Object object )

void

commit_action ( bool execute=true )

void

create_action ( String name, MergeMode merge_mode=0, Object custom_context=null )

UndoRedo

get_history_undo_redo ( int id ) const

int

get_object_history_id ( Object object ) const

bool

is_committing_action ( ) const

Enumerations

enum SpecialHistory:

  • GLOBAL_HISTORY = 0 --- Global history not associated with any scene, but with external resources etc.

  • INVALID_HISTORY = -99 --- Invalid "null" history. It's a special value, not associated with any object.

Method Descriptions

Register a method that will be called when the action is committed (i.e. the "do" action).

If this is the first operation, the object will be used to deduce target undo history.


Register a property value change for "do".

If this is the first operation, the object will be used to deduce target undo history.


  • void add_do_reference ( Object object )

Register a reference for "do" that will be erased if the "do" history is lost. This is useful mostly for new nodes created for the "do" call. Do not use for resources.


Register a method that will be called when the action is undone (i.e. the "undo" action).

If this is the first operation, the object will be used to deduce target undo history.


Register a property value change for "undo".

If this is the first operation, the object will be used to deduce target undo history.


  • void add_undo_reference ( Object object )

Register a reference for "undo" that will be erased if the "undo" history is lost. This is useful mostly for nodes removed with the "do" call (not the "undo" call!).


  • void commit_action ( bool execute=true )

Commit the action. If execute is true (default), all "do" methods/properties are called/set when this function is called.


Create a new action. After this is called, do all your calls to add_do_method, add_undo_method, add_do_property, and add_undo_property, then commit the action with commit_action.

The way actions are merged is dictated by the merge_mode argument. See MergeMode for details.

If custom_context object is provided, it will be used for deducing target history (instead of using the first operation).


Returns the UndoRedo object associated with the given history id.

id above 0 are mapped to the opened scene tabs (but it doesn't match their order). id of 0 or lower have special meaning (see SpecialHistory).

Best used with get_object_history_id. This method is only provided in case you need some more advanced methods of UndoRedo (but keep in mind that directly operating on the UndoRedo object might affect editor's stability).


  • int get_object_history_id ( Object object ) const

Returns the history ID deduced from the given object. It can be used with get_history_undo_redo.


  • bool is_committing_action ( ) const

Returns true if the EditorUndoRedoManager is currently committing the action, i.e. running its "do" method or property change (see commit_action).