aboutsummaryrefslogtreecommitdiff
path: root/core/undo_redo.cpp
diff options
context:
space:
mode:
authorJuan Linietsky2017-01-05 09:16:00 -0300
committerJuan Linietsky2017-01-05 09:16:00 -0300
commit0f7af4ea51744cda23c4d3c7481f9c332973d1d4 (patch)
tree27b8914062558b5648655ccf3db13251d217af98 /core/undo_redo.cpp
parent9e477babb3bf0ce5179395c2a5155a3f3cd36798 (diff)
downloadgodot-0f7af4ea51744cda23c4d3c7481f9c332973d1d4.tar.gz
godot-0f7af4ea51744cda23c4d3c7481f9c332973d1d4.tar.zst
godot-0f7af4ea51744cda23c4d3c7481f9c332973d1d4.zip
Diffstat (limited to 'core/undo_redo.cpp')
-rw-r--r--core/undo_redo.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp
index 5bdc8ef72..acb262d40 100644
--- a/core/undo_redo.cpp
+++ b/core/undo_redo.cpp
@@ -27,7 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "undo_redo.h"
-
+#include "os/os.h"
void UndoRedo::_discard_redo() {
@@ -54,12 +54,14 @@ void UndoRedo::_discard_redo() {
void UndoRedo::create_action(const String& p_name,MergeMode p_mode) {
+ uint32_t ticks = OS::get_singleton()->get_ticks_msec();
+
if (action_level==0) {
_discard_redo();
// Check if the merge operation is valid
- if (p_mode!=MERGE_DISABLE && actions.size() && actions[actions.size()-1].name==p_name) {
+ if (p_mode!=MERGE_DISABLE && actions.size() && actions[actions.size()-1].name==p_name && actions[actions.size()-1].last_tick+800 > ticks) {
current_action=actions.size()-2;
@@ -83,12 +85,15 @@ void UndoRedo::create_action(const String& p_name,MergeMode p_mode) {
}
}
+ actions[actions.size()-1].last_tick=ticks;
+
merge_mode=p_mode;
} else {
Action new_action;
new_action.name=p_name;
+ new_action.last_tick=ticks;
actions.push_back(new_action);
merge_mode=MERGE_DISABLE;