summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorMichael Alexsander Silva Dias <michaelalexsander@protonmail.com>2019-03-22 22:06:01 -0300
committerMichael Alexsander Silva Dias <michaelalexsander@protonmail.com>2019-04-04 14:37:45 -0300
commite63e3875d7c4eb834bee2bb24c49c540cee0a0fd (patch)
tree69542de83f65f264db4255daae836d35d1983250 /core
parent6d2722613476f36c584b69b5b4e9dd88e4be1cec (diff)
Fix 'UndoRedo' increasing its version on actions that should be merged
Diffstat (limited to 'core')
-rw-r--r--core/undo_redo.cpp8
-rw-r--r--core/undo_redo.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp
index e13164d50f..69581e4115 100644
--- a/core/undo_redo.cpp
+++ b/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;
diff --git a/core/undo_redo.h b/core/undo_redo.h
index b626149ce6..6293e77acc 100644
--- a/core/undo_redo.h
+++ b/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();