diff options
| author | Juan Linietsky | 2017-01-05 09:16:00 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2017-01-05 09:16:00 -0300 |
| commit | 0f7af4ea51744cda23c4d3c7481f9c332973d1d4 (patch) | |
| tree | 27b8914062558b5648655ccf3db13251d217af98 /core/undo_redo.cpp | |
| parent | 9e477babb3bf0ce5179395c2a5155a3f3cd36798 (diff) | |
| download | godot-0f7af4ea51744cda23c4d3c7481f9c332973d1d4.tar.gz godot-0f7af4ea51744cda23c4d3c7481f9c332973d1d4.tar.zst godot-0f7af4ea51744cda23c4d3c7481f9c332973d1d4.zip | |
Diffstat (limited to 'core/undo_redo.cpp')
| -rw-r--r-- | core/undo_redo.cpp | 9 |
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; |
