summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2019-04-05 15:25:36 +0200
committerGitHub <noreply@github.com>2019-04-05 15:25:36 +0200
commit4141703b1a47a9772f315431a9e92445ef377840 (patch)
tree30f021c814e150e15a9bc20e970e3d13e7a24e95
parenta49f3ba5accea027bf495465b9908b879b6877ab (diff)
parente63e3875d7c4eb834bee2bb24c49c540cee0a0fd (diff)
Merge pull request #27339 from YeldhamDev/undoredo_merge_version
Fix 'UndoRedo' increasing its version on actions that should be merged
-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();