Browse Source

Fix 'UndoRedo' increasing its version on actions that should be merged

Michael Alexsander Silva Dias 6 years ago
parent
commit
e63e3875d7
2 changed files with 8 additions and 1 deletions
  1. 7 1
      core/undo_redo.cpp
  2. 1 0
      core/undo_redo.h

+ 7 - 1
core/undo_redo.cpp

@@ -90,7 +90,7 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) {
 			actions.write[actions.size() - 1].last_tick = ticks;
 
 			merge_mode = p_mode;
-
+			merging = true;
 		} else {
 
 			Action new_action;
@@ -250,6 +250,11 @@ void UndoRedo::commit_action() {
 	if (action_level > 0)
 		return; //still nested
 
+	if (merging) {
+		version--;
+		merging = false;
+	}
+
 	commiting++;
 	redo(); // perform action
 	commiting--;
@@ -396,6 +401,7 @@ UndoRedo::UndoRedo() {
 	action_level = 0;
 	current_action = -1;
 	merge_mode = MERGE_DISABLE;
+	merging = false;
 	callback = NULL;
 	callback_ud = NULL;
 

+ 1 - 0
core/undo_redo.h

@@ -80,6 +80,7 @@ private:
 	int current_action;
 	int action_level;
 	MergeMode merge_mode;
+	bool merging;
 	uint64_t version;
 
 	void _pop_history_tail();