From 6ba94d5ca03e51a4c10f6d47e12b347a84ecb722 Mon Sep 17 00:00:00 2001 From: Michael Alexsander Silva Dias Date: Sun, 18 Nov 2018 18:07:38 -0200 Subject: [PATCH] Add argument to UndoRedo's "clear_history()" to not increase the version --- core/undo_redo.cpp | 7 ++++--- core/undo_redo.h | 2 +- doc/classes/UndoRedo.xml | 3 +++ editor/editor_node.cpp | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index 6f7c8ea08ad..3d41c374ea5 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -325,7 +325,7 @@ bool UndoRedo::undo() { return true; } -void UndoRedo::clear_history() { +void UndoRedo::clear_history(bool p_increase_version) { ERR_FAIL_COND(action_level > 0); _discard_redo(); @@ -333,7 +333,8 @@ void UndoRedo::clear_history() { while (actions.size()) _pop_history_tail(); - version++; + if (p_increase_version) + version++; } String UndoRedo::get_current_action_name() const { @@ -493,7 +494,7 @@ void UndoRedo::_bind_methods() { ClassDB::bind_method(D_METHOD("add_undo_property", "object", "property", "value"), &UndoRedo::add_undo_property); ClassDB::bind_method(D_METHOD("add_do_reference", "object"), &UndoRedo::add_do_reference); ClassDB::bind_method(D_METHOD("add_undo_reference", "object"), &UndoRedo::add_undo_reference); - ClassDB::bind_method(D_METHOD("clear_history"), &UndoRedo::clear_history); + ClassDB::bind_method(D_METHOD("clear_history", "increase_version"), &UndoRedo::clear_history, DEFVAL(true)); ClassDB::bind_method(D_METHOD("get_current_action_name"), &UndoRedo::get_current_action_name); ClassDB::bind_method(D_METHOD("get_version"), &UndoRedo::get_version); ClassDB::bind_method(D_METHOD("redo"), &UndoRedo::redo); diff --git a/core/undo_redo.h b/core/undo_redo.h index 22dcd604723..f09fca9a789 100644 --- a/core/undo_redo.h +++ b/core/undo_redo.h @@ -112,7 +112,7 @@ public: bool redo(); bool undo(); String get_current_action_name() const; - void clear_history(); + void clear_history(bool p_increase_version = true); uint64_t get_version() const; diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml index 0ea5c6e005b..93806ac3263 100644 --- a/doc/classes/UndoRedo.xml +++ b/doc/classes/UndoRedo.xml @@ -102,8 +102,11 @@ + + Clear the undo/redo history and associated references. + Passing [code]false[/code] to [code]increase_version[/code] will prevent the version number to be increased from this. diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index dbbf5d08b88..d3ae5d6601e 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2003,7 +2003,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { if (err != OK) ERR_PRINT("Failed to load scene"); editor_data.move_edited_scene_to_index(cur_idx); - get_undo_redo()->clear_history(); + get_undo_redo()->clear_history(false); scene_tabs->set_current_tab(cur_idx); } break; @@ -2613,7 +2613,7 @@ void EditorNode::_remove_edited_scene() { } _scene_tab_changed(new_index); editor_data.remove_scene(old_index); - editor_data.get_undo_redo().clear_history(); + editor_data.get_undo_redo().clear_history(false); _update_title(); _update_scene_tabs(); }