summaryrefslogtreecommitdiffstats
path: root/editor/export/project_export.cpp
diff options
context:
space:
mode:
authorYuri Sizov <yuris@humnom.net>2023-12-08 16:59:04 +0100
committerYuri Sizov <yuris@humnom.net>2023-12-08 16:59:04 +0100
commit26ba7068319e7786aa054162e515461aacab7ef8 (patch)
tree411c7231ace5ba65d3817c8daee666ab8accbca0 /editor/export/project_export.cpp
parent74b6fad3c8a884b6c628365b6bddcb0b739a1e51 (diff)
parent773b4d77644a5a75bbe326cb57e13dff3447996b (diff)
downloadredot-engine-26ba7068319e7786aa054162e515461aacab7ef8.tar.gz
Merge pull request #85845 from YuriSizov/editor-export-hidden-errors
Ensure more export errors are reported to users
Diffstat (limited to 'editor/export/project_export.cpp')
-rw-r--r--editor/export/project_export.cpp52
1 files changed, 27 insertions, 25 deletions
diff --git a/editor/export/project_export.cpp b/editor/export/project_export.cpp
index cacdf108cf..f2c5eeb2ed 100644
--- a/editor/export/project_export.cpp
+++ b/editor/export/project_export.cpp
@@ -1109,37 +1109,40 @@ void ProjectExportDialog::_export_all_dialog_action(const String &p_str) {
}
void ProjectExportDialog::_export_all(bool p_debug) {
- String export_target = p_debug ? TTR("Debug") : TTR("Release");
- EditorProgress ep("exportall", TTR("Exporting All") + " " + export_target, EditorExport::get_singleton()->get_export_preset_count(), true);
-
exporting = true;
-
bool show_dialog = false;
- result_dialog_log->clear();
- for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
- Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(i);
- if (preset.is_null()) {
- exporting = false;
- ERR_FAIL_MSG("Failed to start the export: one of the presets is invalid.");
- }
- Ref<EditorExportPlatform> platform = preset->get_platform();
- if (platform.is_null()) {
- exporting = false;
- ERR_FAIL_MSG("Failed to start the export: one of the presets has no valid platform.");
- }
+ { // Scope for the editor progress, we must free it before showing the dialog at the end.
+ String export_target = p_debug ? TTR("Debug") : TTR("Release");
+ EditorProgress ep("exportall", TTR("Exporting All") + " " + export_target, EditorExport::get_singleton()->get_export_preset_count(), true);
- ep.step(preset->get_name(), i);
+ result_dialog_log->clear();
+ for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
+ Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(i);
+ if (preset.is_null()) {
+ exporting = false;
+ ERR_FAIL_MSG("Failed to start the export: one of the presets is invalid.");
+ }
- platform->clear_messages();
- Error err = platform->export_project(preset, p_debug, preset->get_export_path(), 0);
- if (err == ERR_SKIP) {
- exporting = false;
- return;
+ Ref<EditorExportPlatform> platform = preset->get_platform();
+ if (platform.is_null()) {
+ exporting = false;
+ ERR_FAIL_MSG("Failed to start the export: one of the presets has no valid platform.");
+ }
+
+ ep.step(preset->get_name(), i);
+
+ platform->clear_messages();
+ Error err = platform->export_project(preset, p_debug, preset->get_export_path(), 0);
+ if (err == ERR_SKIP) {
+ exporting = false;
+ return;
+ }
+ bool has_messages = platform->fill_log_messages(result_dialog_log, err);
+ show_dialog = show_dialog || has_messages;
}
- bool has_messages = platform->fill_log_messages(result_dialog_log, err);
- show_dialog = show_dialog || has_messages;
}
+
if (show_dialog) {
result_dialog->popup_centered_ratio(0.5);
}
@@ -1148,7 +1151,6 @@ void ProjectExportDialog::_export_all(bool p_debug) {
}
void ProjectExportDialog::_bind_methods() {
- ClassDB::bind_method("_export_all", &ProjectExportDialog::_export_all);
ClassDB::bind_method("set_export_path", &ProjectExportDialog::set_export_path);
ClassDB::bind_method("get_export_path", &ProjectExportDialog::get_export_path);
ClassDB::bind_method("get_current_preset", &ProjectExportDialog::get_current_preset);