Merge pull request #87980 from KoBeWi/this_history_is_now…_history

Check if history exists before discarding
This commit is contained in:
Rémi Verschelde 2024-02-05 18:05:52 +01:00
commit 9a63aeda79
No known key found for this signature in database
GPG key ID: C3336907360768E1
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);
}
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);
}

View file

@ -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);

View file

@ -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();