diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-05 18:05:52 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-05 18:05:52 +0100 |
commit | 9a63aeda7935a1a65853ecaec6d140725fae4443 (patch) | |
tree | eaa5cdfed46db899ab068f53f5c4b898d3646646 | |
parent | 843c350ccae0a08db47ce899f5f9f681b2241cd4 (diff) | |
parent | 808f4e8cb9be502060317526f887b1d31cbeb40a (diff) | |
download | redot-engine-9a63aeda7935a1a65853ecaec6d140725fae4443.tar.gz |
Merge pull request #87980 from KoBeWi/this_history_is_now…_history
Check if history exists before discarding
-rw-r--r-- | editor/editor_data.cpp | 4 | ||||
-rw-r--r-- | editor/editor_undo_redo_manager.cpp | 4 | ||||
-rw-r--r-- | editor/editor_undo_redo_manager.h | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 786e841c21..b4cf6d8de1 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -649,7 +649,9 @@ void EditorData::remove_scene(int p_idx) { EditorNode::get_singleton()->emit_signal("scene_closed", edited_scene[p_idx].path); } - undo_redo_manager->discard_history(edited_scene[p_idx].history_id); + if (undo_redo_manager->has_history(edited_scene[p_idx].history_id)) { // Might not exist if scene failed to load. + undo_redo_manager->discard_history(edited_scene[p_idx].history_id); + } edited_scene.remove_at(p_idx); } diff --git a/editor/editor_undo_redo_manager.cpp b/editor/editor_undo_redo_manager.cpp index c2491f8611..94f76dbc41 100644 --- a/editor/editor_undo_redo_manager.cpp +++ b/editor/editor_undo_redo_manager.cpp @@ -375,6 +375,10 @@ bool EditorUndoRedoManager::has_redo() { return false; } +bool EditorUndoRedoManager::has_history(int p_idx) const { + return history_map.has(p_idx); +} + void EditorUndoRedoManager::clear_history(bool p_increase_version, int p_idx) { if (p_idx != INVALID_HISTORY) { History &history = get_or_create_history(p_idx); diff --git a/editor/editor_undo_redo_manager.h b/editor/editor_undo_redo_manager.h index effa36a87c..e8c782871c 100644 --- a/editor/editor_undo_redo_manager.h +++ b/editor/editor_undo_redo_manager.h @@ -130,6 +130,7 @@ public: bool is_history_unsaved(int p_idx); bool has_undo(); bool has_redo(); + bool has_history(int p_idx) const; String get_current_action_name(); int get_current_action_history_id(); |