class_undoredo.rst 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/UndoRedo.xml.
  6. .. _class_UndoRedo:
  7. UndoRedo
  8. ========
  9. **Inherits:** :ref:`Object<class_Object>`
  10. Provides a high-level interface for implementing undo and redo operations.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. UndoRedo works by registering methods and property changes inside "actions". You can create an action, then provide ways to do and undo this action using function calls and property changes, then commit the action.
  15. When an action is committed, all of the ``do_*`` methods will run. If the :ref:`undo<class_UndoRedo_method_undo>` method is used, the ``undo_*`` methods will run. If the :ref:`redo<class_UndoRedo_method_redo>` method is used, once again, all of the ``do_*`` methods will run.
  16. Here's an example on how to add an action:
  17. .. tabs::
  18. .. code-tab:: gdscript
  19. var undo_redo = UndoRedo.new()
  20. func do_something():
  21. pass # Put your code here.
  22. func undo_something():
  23. pass # Put here the code that reverts what's done by "do_something()".
  24. func _on_my_button_pressed():
  25. var node = get_node("MyNode2D")
  26. undo_redo.create_action("Move the node")
  27. undo_redo.add_do_method(do_something)
  28. undo_redo.add_undo_method(undo_something)
  29. undo_redo.add_do_property(node, "position", Vector2(100,100))
  30. undo_redo.add_undo_property(node, "position", node.position)
  31. undo_redo.commit_action()
  32. .. code-tab:: csharp
  33. private UndoRedo _undoRedo;
  34. public override void _Ready()
  35. {
  36. _undoRedo = new UndoRedo();
  37. }
  38. public void DoSomething()
  39. {
  40. // Put your code here.
  41. }
  42. public void UndoSomething()
  43. {
  44. // Put here the code that reverts what's done by "DoSomething()".
  45. }
  46. private void OnMyButtonPressed()
  47. {
  48. var node = GetNode<Node2D>("MyNode2D");
  49. _undoRedo.CreateAction("Move the node");
  50. _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));
  51. _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));
  52. _undoRedo.AddDoProperty(node, "position", new Vector2(100, 100));
  53. _undoRedo.AddUndoProperty(node, "position", node.Position);
  54. _undoRedo.CommitAction();
  55. }
  56. Before calling any of the ``add_(un)do_*`` methods, you need to first call :ref:`create_action<class_UndoRedo_method_create_action>`. Afterwards you need to call :ref:`commit_action<class_UndoRedo_method_commit_action>`.
  57. If you don't need to register a method, you can leave :ref:`add_do_method<class_UndoRedo_method_add_do_method>` and :ref:`add_undo_method<class_UndoRedo_method_add_undo_method>` out; the same goes for properties. You can also register more than one method/property.
  58. If you are making an :ref:`EditorPlugin<class_EditorPlugin>` and want to integrate into the editor's undo history, use :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>` instead.
  59. If you are registering multiple properties/method which depend on one another, be aware that by default undo operation are called in the same order they have been added. Therefore instead of grouping do operation with their undo operations it is better to group do on one side and undo on the other as shown below.
  60. .. tabs::
  61. .. code-tab:: gdscript
  62. undo_redo.create_action("Add object")
  63. # DO
  64. undo_redo.add_do_method(_create_object)
  65. undo_redo.add_do_method(_add_object_to_singleton)
  66. # UNDO
  67. undo_redo.add_undo_method(_remove_object_from_singleton)
  68. undo_redo.add_undo_method(_destroy_that_object)
  69. undo_redo.commit_action()
  70. .. code-tab:: csharp
  71. _undo_redo.CreateAction("Add object");
  72. // DO
  73. _undo_redo.AddDoMethod(new Callable(this, MethodName.CreateObject));
  74. _undo_redo.AddDoMethod(new Callable(this, MethodName.AddObjectToSingleton));
  75. // UNDO
  76. _undo_redo.AddUndoMethod(new Callable(this, MethodName.RemoveObjectFromSingleton));
  77. _undo_redo.AddUndoMethod(new Callable(this, MethodName.DestroyThatObject));
  78. _undo_redo.CommitAction();
  79. .. rst-class:: classref-reftable-group
  80. Properties
  81. ----------
  82. .. table::
  83. :widths: auto
  84. +-----------------------+-----------------------------------------------------+-------+
  85. | :ref:`int<class_int>` | :ref:`max_steps<class_UndoRedo_property_max_steps>` | ``0`` |
  86. +-----------------------+-----------------------------------------------------+-------+
  87. .. rst-class:: classref-reftable-group
  88. Methods
  89. -------
  90. .. table::
  91. :widths: auto
  92. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  93. | |void| | :ref:`add_do_method<class_UndoRedo_method_add_do_method>`\ (\ callable\: :ref:`Callable<class_Callable>`\ ) |
  94. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  95. | |void| | :ref:`add_do_property<class_UndoRedo_method_add_do_property>`\ (\ object\: :ref:`Object<class_Object>`, property\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) |
  96. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  97. | |void| | :ref:`add_do_reference<class_UndoRedo_method_add_do_reference>`\ (\ object\: :ref:`Object<class_Object>`\ ) |
  98. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  99. | |void| | :ref:`add_undo_method<class_UndoRedo_method_add_undo_method>`\ (\ callable\: :ref:`Callable<class_Callable>`\ ) |
  100. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  101. | |void| | :ref:`add_undo_property<class_UndoRedo_method_add_undo_property>`\ (\ object\: :ref:`Object<class_Object>`, property\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) |
  102. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  103. | |void| | :ref:`add_undo_reference<class_UndoRedo_method_add_undo_reference>`\ (\ object\: :ref:`Object<class_Object>`\ ) |
  104. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  105. | |void| | :ref:`clear_history<class_UndoRedo_method_clear_history>`\ (\ increase_version\: :ref:`bool<class_bool>` = true\ ) |
  106. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  107. | |void| | :ref:`commit_action<class_UndoRedo_method_commit_action>`\ (\ execute\: :ref:`bool<class_bool>` = true\ ) |
  108. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  109. | |void| | :ref:`create_action<class_UndoRedo_method_create_action>`\ (\ name\: :ref:`String<class_String>`, merge_mode\: :ref:`MergeMode<enum_UndoRedo_MergeMode>` = 0, backward_undo_ops\: :ref:`bool<class_bool>` = false\ ) |
  110. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  111. | |void| | :ref:`end_force_keep_in_merge_ends<class_UndoRedo_method_end_force_keep_in_merge_ends>`\ (\ ) |
  112. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  113. | :ref:`String<class_String>` | :ref:`get_action_name<class_UndoRedo_method_get_action_name>`\ (\ id\: :ref:`int<class_int>`\ ) |
  114. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  115. | :ref:`int<class_int>` | :ref:`get_current_action<class_UndoRedo_method_get_current_action>`\ (\ ) |
  116. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  117. | :ref:`String<class_String>` | :ref:`get_current_action_name<class_UndoRedo_method_get_current_action_name>`\ (\ ) |const| |
  118. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  119. | :ref:`int<class_int>` | :ref:`get_history_count<class_UndoRedo_method_get_history_count>`\ (\ ) |
  120. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  121. | :ref:`int<class_int>` | :ref:`get_version<class_UndoRedo_method_get_version>`\ (\ ) |const| |
  122. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  123. | :ref:`bool<class_bool>` | :ref:`has_redo<class_UndoRedo_method_has_redo>`\ (\ ) |const| |
  124. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  125. | :ref:`bool<class_bool>` | :ref:`has_undo<class_UndoRedo_method_has_undo>`\ (\ ) |const| |
  126. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  127. | :ref:`bool<class_bool>` | :ref:`is_committing_action<class_UndoRedo_method_is_committing_action>`\ (\ ) |const| |
  128. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  129. | :ref:`bool<class_bool>` | :ref:`redo<class_UndoRedo_method_redo>`\ (\ ) |
  130. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  131. | |void| | :ref:`start_force_keep_in_merge_ends<class_UndoRedo_method_start_force_keep_in_merge_ends>`\ (\ ) |
  132. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  133. | :ref:`bool<class_bool>` | :ref:`undo<class_UndoRedo_method_undo>`\ (\ ) |
  134. +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  135. .. rst-class:: classref-section-separator
  136. ----
  137. .. rst-class:: classref-descriptions-group
  138. Signals
  139. -------
  140. .. _class_UndoRedo_signal_version_changed:
  141. .. rst-class:: classref-signal
  142. **version_changed**\ (\ ) :ref:`🔗<class_UndoRedo_signal_version_changed>`
  143. Called when :ref:`undo<class_UndoRedo_method_undo>` or :ref:`redo<class_UndoRedo_method_redo>` was called.
  144. .. rst-class:: classref-section-separator
  145. ----
  146. .. rst-class:: classref-descriptions-group
  147. Enumerations
  148. ------------
  149. .. _enum_UndoRedo_MergeMode:
  150. .. rst-class:: classref-enumeration
  151. enum **MergeMode**: :ref:`🔗<enum_UndoRedo_MergeMode>`
  152. .. _class_UndoRedo_constant_MERGE_DISABLE:
  153. .. rst-class:: classref-enumeration-constant
  154. :ref:`MergeMode<enum_UndoRedo_MergeMode>` **MERGE_DISABLE** = ``0``
  155. Makes "do"/"undo" operations stay in separate actions.
  156. .. _class_UndoRedo_constant_MERGE_ENDS:
  157. .. rst-class:: classref-enumeration-constant
  158. :ref:`MergeMode<enum_UndoRedo_MergeMode>` **MERGE_ENDS** = ``1``
  159. Merges this action with the previous one if they have the same name. Keeps only the first action's "undo" operations and the last action's "do" operations. Useful for sequential changes to a single value.
  160. .. _class_UndoRedo_constant_MERGE_ALL:
  161. .. rst-class:: classref-enumeration-constant
  162. :ref:`MergeMode<enum_UndoRedo_MergeMode>` **MERGE_ALL** = ``2``
  163. Merges this action with the previous one if they have the same name.
  164. .. rst-class:: classref-section-separator
  165. ----
  166. .. rst-class:: classref-descriptions-group
  167. Property Descriptions
  168. ---------------------
  169. .. _class_UndoRedo_property_max_steps:
  170. .. rst-class:: classref-property
  171. :ref:`int<class_int>` **max_steps** = ``0`` :ref:`🔗<class_UndoRedo_property_max_steps>`
  172. .. rst-class:: classref-property-setget
  173. - |void| **set_max_steps**\ (\ value\: :ref:`int<class_int>`\ )
  174. - :ref:`int<class_int>` **get_max_steps**\ (\ )
  175. The maximum number of steps that can be stored in the undo/redo history. If the number of stored steps exceeds this limit, older steps are removed from history and can no longer be reached by calling :ref:`undo<class_UndoRedo_method_undo>`. A value of ``0`` or lower means no limit.
  176. .. rst-class:: classref-section-separator
  177. ----
  178. .. rst-class:: classref-descriptions-group
  179. Method Descriptions
  180. -------------------
  181. .. _class_UndoRedo_method_add_do_method:
  182. .. rst-class:: classref-method
  183. |void| **add_do_method**\ (\ callable\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_UndoRedo_method_add_do_method>`
  184. Register a :ref:`Callable<class_Callable>` that will be called when the action is committed.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_UndoRedo_method_add_do_property:
  188. .. rst-class:: classref-method
  189. |void| **add_do_property**\ (\ object\: :ref:`Object<class_Object>`, property\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_UndoRedo_method_add_do_property>`
  190. Register a ``property`` that would change its value to ``value`` when the action is committed.
  191. .. rst-class:: classref-item-separator
  192. ----
  193. .. _class_UndoRedo_method_add_do_reference:
  194. .. rst-class:: classref-method
  195. |void| **add_do_reference**\ (\ object\: :ref:`Object<class_Object>`\ ) :ref:`🔗<class_UndoRedo_method_add_do_reference>`
  196. Register a reference to an object that will be erased if the "do" history is deleted. This is useful for objects added by the "do" action and removed by the "undo" action.
  197. When the "do" history is deleted, if the object is a :ref:`RefCounted<class_RefCounted>`, it will be unreferenced. Otherwise, it will be freed. Do not use for resources.
  198. ::
  199. var node = Node2D.new()
  200. undo_redo.create_action("Add node")
  201. undo_redo.add_do_method(add_child.bind(node))
  202. undo_redo.add_do_reference(node)
  203. undo_redo.add_undo_method(remove_child.bind(node))
  204. undo_redo.commit_action()
  205. .. rst-class:: classref-item-separator
  206. ----
  207. .. _class_UndoRedo_method_add_undo_method:
  208. .. rst-class:: classref-method
  209. |void| **add_undo_method**\ (\ callable\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_UndoRedo_method_add_undo_method>`
  210. Register a :ref:`Callable<class_Callable>` that will be called when the action is undone.
  211. .. rst-class:: classref-item-separator
  212. ----
  213. .. _class_UndoRedo_method_add_undo_property:
  214. .. rst-class:: classref-method
  215. |void| **add_undo_property**\ (\ object\: :ref:`Object<class_Object>`, property\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_UndoRedo_method_add_undo_property>`
  216. Register a ``property`` that would change its value to ``value`` when the action is undone.
  217. .. rst-class:: classref-item-separator
  218. ----
  219. .. _class_UndoRedo_method_add_undo_reference:
  220. .. rst-class:: classref-method
  221. |void| **add_undo_reference**\ (\ object\: :ref:`Object<class_Object>`\ ) :ref:`🔗<class_UndoRedo_method_add_undo_reference>`
  222. Register a reference to an object that will be erased if the "undo" history is deleted. This is useful for objects added by the "undo" action and removed by the "do" action.
  223. When the "undo" history is deleted, if the object is a :ref:`RefCounted<class_RefCounted>`, it will be unreferenced. Otherwise, it will be freed. Do not use for resources.
  224. ::
  225. var node = $Node2D
  226. undo_redo.create_action("Remove node")
  227. undo_redo.add_do_method(remove_child.bind(node))
  228. undo_redo.add_undo_method(add_child.bind(node))
  229. undo_redo.add_undo_reference(node)
  230. undo_redo.commit_action()
  231. .. rst-class:: classref-item-separator
  232. ----
  233. .. _class_UndoRedo_method_clear_history:
  234. .. rst-class:: classref-method
  235. |void| **clear_history**\ (\ increase_version\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_UndoRedo_method_clear_history>`
  236. Clear the undo/redo history and associated references.
  237. Passing ``false`` to ``increase_version`` will prevent the version number from increasing when the history is cleared.
  238. .. rst-class:: classref-item-separator
  239. ----
  240. .. _class_UndoRedo_method_commit_action:
  241. .. rst-class:: classref-method
  242. |void| **commit_action**\ (\ execute\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_UndoRedo_method_commit_action>`
  243. Commit the action. If ``execute`` is ``true`` (which it is by default), all "do" methods/properties are called/set when this function is called.
  244. .. rst-class:: classref-item-separator
  245. ----
  246. .. _class_UndoRedo_method_create_action:
  247. .. rst-class:: classref-method
  248. |void| **create_action**\ (\ name\: :ref:`String<class_String>`, merge_mode\: :ref:`MergeMode<enum_UndoRedo_MergeMode>` = 0, backward_undo_ops\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_UndoRedo_method_create_action>`
  249. Create a new action. After this is called, do all your calls to :ref:`add_do_method<class_UndoRedo_method_add_do_method>`, :ref:`add_undo_method<class_UndoRedo_method_add_undo_method>`, :ref:`add_do_property<class_UndoRedo_method_add_do_property>`, and :ref:`add_undo_property<class_UndoRedo_method_add_undo_property>`, then commit the action with :ref:`commit_action<class_UndoRedo_method_commit_action>`.
  250. The way actions are merged is dictated by ``merge_mode``. See :ref:`MergeMode<enum_UndoRedo_MergeMode>` for details.
  251. The way undo operation are ordered in actions is dictated by ``backward_undo_ops``. When ``backward_undo_ops`` is ``false`` undo option are ordered in the same order they were added. Which means the first operation to be added will be the first to be undone.
  252. .. rst-class:: classref-item-separator
  253. ----
  254. .. _class_UndoRedo_method_end_force_keep_in_merge_ends:
  255. .. rst-class:: classref-method
  256. |void| **end_force_keep_in_merge_ends**\ (\ ) :ref:`🔗<class_UndoRedo_method_end_force_keep_in_merge_ends>`
  257. Stops marking operations as to be processed even if the action gets merged with another in the :ref:`MERGE_ENDS<class_UndoRedo_constant_MERGE_ENDS>` mode. See :ref:`start_force_keep_in_merge_ends<class_UndoRedo_method_start_force_keep_in_merge_ends>`.
  258. .. rst-class:: classref-item-separator
  259. ----
  260. .. _class_UndoRedo_method_get_action_name:
  261. .. rst-class:: classref-method
  262. :ref:`String<class_String>` **get_action_name**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_UndoRedo_method_get_action_name>`
  263. Gets the action name from its index.
  264. .. rst-class:: classref-item-separator
  265. ----
  266. .. _class_UndoRedo_method_get_current_action:
  267. .. rst-class:: classref-method
  268. :ref:`int<class_int>` **get_current_action**\ (\ ) :ref:`🔗<class_UndoRedo_method_get_current_action>`
  269. Gets the index of the current action.
  270. .. rst-class:: classref-item-separator
  271. ----
  272. .. _class_UndoRedo_method_get_current_action_name:
  273. .. rst-class:: classref-method
  274. :ref:`String<class_String>` **get_current_action_name**\ (\ ) |const| :ref:`🔗<class_UndoRedo_method_get_current_action_name>`
  275. Gets the name of the current action, equivalent to ``get_action_name(get_current_action())``.
  276. .. rst-class:: classref-item-separator
  277. ----
  278. .. _class_UndoRedo_method_get_history_count:
  279. .. rst-class:: classref-method
  280. :ref:`int<class_int>` **get_history_count**\ (\ ) :ref:`🔗<class_UndoRedo_method_get_history_count>`
  281. Returns how many elements are in the history.
  282. .. rst-class:: classref-item-separator
  283. ----
  284. .. _class_UndoRedo_method_get_version:
  285. .. rst-class:: classref-method
  286. :ref:`int<class_int>` **get_version**\ (\ ) |const| :ref:`🔗<class_UndoRedo_method_get_version>`
  287. Gets the version. Every time a new action is committed, the **UndoRedo**'s version number is increased automatically.
  288. This is useful mostly to check if something changed from a saved version.
  289. .. rst-class:: classref-item-separator
  290. ----
  291. .. _class_UndoRedo_method_has_redo:
  292. .. rst-class:: classref-method
  293. :ref:`bool<class_bool>` **has_redo**\ (\ ) |const| :ref:`🔗<class_UndoRedo_method_has_redo>`
  294. Returns ``true`` if a "redo" action is available.
  295. .. rst-class:: classref-item-separator
  296. ----
  297. .. _class_UndoRedo_method_has_undo:
  298. .. rst-class:: classref-method
  299. :ref:`bool<class_bool>` **has_undo**\ (\ ) |const| :ref:`🔗<class_UndoRedo_method_has_undo>`
  300. Returns ``true`` if an "undo" action is available.
  301. .. rst-class:: classref-item-separator
  302. ----
  303. .. _class_UndoRedo_method_is_committing_action:
  304. .. rst-class:: classref-method
  305. :ref:`bool<class_bool>` **is_committing_action**\ (\ ) |const| :ref:`🔗<class_UndoRedo_method_is_committing_action>`
  306. Returns ``true`` if the **UndoRedo** is currently committing the action, i.e. running its "do" method or property change (see :ref:`commit_action<class_UndoRedo_method_commit_action>`).
  307. .. rst-class:: classref-item-separator
  308. ----
  309. .. _class_UndoRedo_method_redo:
  310. .. rst-class:: classref-method
  311. :ref:`bool<class_bool>` **redo**\ (\ ) :ref:`🔗<class_UndoRedo_method_redo>`
  312. Redo the last action.
  313. .. rst-class:: classref-item-separator
  314. ----
  315. .. _class_UndoRedo_method_start_force_keep_in_merge_ends:
  316. .. rst-class:: classref-method
  317. |void| **start_force_keep_in_merge_ends**\ (\ ) :ref:`🔗<class_UndoRedo_method_start_force_keep_in_merge_ends>`
  318. Marks the next "do" and "undo" operations to be processed even if the action gets merged with another in the :ref:`MERGE_ENDS<class_UndoRedo_constant_MERGE_ENDS>` mode. Return to normal operation using :ref:`end_force_keep_in_merge_ends<class_UndoRedo_method_end_force_keep_in_merge_ends>`.
  319. .. rst-class:: classref-item-separator
  320. ----
  321. .. _class_UndoRedo_method_undo:
  322. .. rst-class:: classref-method
  323. :ref:`bool<class_bool>` **undo**\ (\ ) :ref:`🔗<class_UndoRedo_method_undo>`
  324. Undo the last action.
  325. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  326. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  327. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  328. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  329. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  330. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  331. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  332. .. |void| replace:: :abbr:`void (No return value.)`