summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2019-02-14 10:19:03 -0300
committerJuan Linietsky <reduzio@gmail.com>2019-02-14 10:22:34 -0300
commit4a24ba6e77c7128e64dee31cf05f6960abdb8108 (patch)
treed826f5eb8284559d98e44514796c2fc3aeb9f4af /core
parent6b184e4d3b4f02c3bb04fa7a36fe65176f89ec3f (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.cpp11
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) {