Check if history exists before discarding

This commit is contained in:
kobewi 2024-02-05 17:42:37 +01:00
parent f427d2f0d3
commit 808f4e8cb9
3 changed files with 8 additions and 1 deletions

View File

@ -649,7 +649,9 @@ void EditorData::remove_scene(int p_idx) {
EditorNode::get_singleton()->emit_signal("scene_closed", edited_scene[p_idx].path); 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); edited_scene.remove_at(p_idx);
} }

View File

@ -375,6 +375,10 @@ bool EditorUndoRedoManager::has_redo() {
return false; 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) { void EditorUndoRedoManager::clear_history(bool p_increase_version, int p_idx) {
if (p_idx != INVALID_HISTORY) { if (p_idx != INVALID_HISTORY) {
History &history = get_or_create_history(p_idx); History &history = get_or_create_history(p_idx);

View File

@ -130,6 +130,7 @@ public:
bool is_history_unsaved(int p_idx); bool is_history_unsaved(int p_idx);
bool has_undo(); bool has_undo();
bool has_redo(); bool has_redo();
bool has_history(int p_idx) const;
String get_current_action_name(); String get_current_action_name();
int get_current_action_history_id(); int get_current_action_history_id();