diff options
Diffstat (limited to 'editor/editor_data.cpp')
-rw-r--r-- | editor/editor_data.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 9e8521e0fe..374688f2db 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -38,7 +38,7 @@ #include "project_settings.h" #include "scene/resources/packed_scene.h" -void EditorHistory::_cleanup_history() { +void EditorHistory::cleanup_history() { for (int i = 0; i < history.size(); i++) { @@ -48,8 +48,14 @@ void EditorHistory::_cleanup_history() { if (!history[i].path[j].ref.is_null()) continue; - if (ObjectDB::get_instance(history[i].path[j].object)) - continue; //has isntance, try next + Object *obj = ObjectDB::get_instance(history[i].path[j].object); + if (obj) { + Node *n = Object::cast_to<Node>(obj); + if (n && n->is_inside_tree()) + continue; + if (!n) // Possibly still alive + continue; + } if (j <= history[i].level) { //before or equal level, complete fail @@ -152,7 +158,7 @@ bool EditorHistory::is_at_end() const { bool EditorHistory::next() { - _cleanup_history(); + cleanup_history(); if ((current + 1) < history.size()) current++; @@ -164,7 +170,7 @@ bool EditorHistory::next() { bool EditorHistory::previous() { - _cleanup_history(); + cleanup_history(); if (current > 0) current--; |