diff options
Diffstat (limited to 'editor/dependency_editor.cpp')
-rw-r--r-- | editor/dependency_editor.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index 99b6955160..aa9125915c 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -495,11 +495,19 @@ void DependencyRemoveDialog::ok_pressed() { Resource *res = ResourceCache::get(files_to_delete[i]); res->set_path(""); } + + // If the file we are deleting is the main scene, clear its definition. + if (files_to_delete[i] == ProjectSettings::get_singleton()->get("application/run/main_scene")) { + ProjectSettings::get_singleton()->set("application/run/main_scene", ""); + } + String path = OS::get_singleton()->get_resource_dir() + files_to_delete[i].replace_first("res://", "/"); print_verbose("Moving to trash: " + path); Error err = OS::get_singleton()->move_to_trash(path); if (err != OK) { EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:") + "\n" + files_to_delete[i] + "\n"); + } else { + emit_signal("file_removed", files_to_delete[i]); } } @@ -515,6 +523,8 @@ void DependencyRemoveDialog::ok_pressed() { Error err = OS::get_singleton()->move_to_trash(path); if (err != OK) { EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:") + "\n" + dirs_to_delete[i] + "\n"); + } else { + emit_signal("folder_removed", dirs_to_delete[i]); } } @@ -540,6 +550,11 @@ void DependencyRemoveDialog::ok_pressed() { } } +void DependencyRemoveDialog::_bind_methods() { + ADD_SIGNAL(MethodInfo("file_removed", PropertyInfo(Variant::STRING, "file"))); + ADD_SIGNAL(MethodInfo("folder_removed", PropertyInfo(Variant::STRING, "folder"))); +} + DependencyRemoveDialog::DependencyRemoveDialog() { VBoxContainer *vb = memnew(VBoxContainer); |