diff options
author | Juan Linietsky <reduzio@gmail.com> | 2019-02-14 10:19:03 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2019-02-14 10:22:34 -0300 |
commit | 4a24ba6e77c7128e64dee31cf05f6960abdb8108 (patch) | |
tree | d826f5eb8284559d98e44514796c2fc3aeb9f4af /core | |
parent | 6b184e4d3b4f02c3bb04fa7a36fe65176f89ec3f (diff) |
-Fixes to undo redo to avoid crash, closes #24251
-Changed Animation to have a special signal when tracks are changed, to avoid unnecesary track cache rebuilds in AnimationPlayer
-Added missing emit_changed whe modifying keys to Animation
-Changed AnimationPlayer to use the new refcounted connections instead of the previous hacky way to keep references
-Changed AnimationEditor to update the current track when keys are edited
-Fixed bug where undo/redo did not work with AnimationKeyEdit (was not being updated)
-Made sure UndoRedo does not mind deleted objects in undo/redo history, this would corrupt the history or clear it without need.
Diffstat (limited to 'core')
-rw-r--r-- | core/undo_redo.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index 6bc882eaec..00894b41d8 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -234,7 +234,9 @@ void UndoRedo::_pop_history_tail() { } actions.remove(0); - current_action--; + if (current_action >= 0) { + current_action--; + } } void UndoRedo::commit_action() { @@ -258,11 +260,8 @@ void UndoRedo::_process_operation_list(List<Operation>::Element *E) { Operation &op = E->get(); Object *obj = ObjectDB::get_instance(op.object); - if (!obj) { - //corruption - clear_history(); - ERR_FAIL_COND(!obj); - } + if (!obj) //may have been deleted and this is fine + continue; switch (op.type) { |