summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorMaganty Rushyendra <mrushyendra@yahoo.com.sg>2020-06-10 17:41:42 +0800
committerMaganty Rushyendra <mrushyendra@yahoo.com.sg>2020-06-11 08:25:24 +0800
commit44094b082d56daa2eab5a8f6c6d73f86d8b18d8b (patch)
treeecdf897bb75fb3e5b561b344bf31c86e0389b121 /editor
parentffbea8aad11e8427b7a7f4929aedeee618baa133 (diff)
Account for file deletion and renaming in Export Presets
Ensure that presets are updated with the latest files when starting up or opening the Project Export dialog. Fixes the error where Godot would attempt to export deleted files that were previously selected.
Diffstat (limited to 'editor')
-rw-r--r--editor/editor_export.cpp19
-rw-r--r--editor/editor_export.h2
-rw-r--r--editor/project_export.cpp1
3 files changed, 21 insertions, 1 deletions
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index 716ead9afc..25594bf7c8 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -90,6 +90,19 @@ Ref<EditorExportPlatform> EditorExportPreset::get_platform() const {
return platform;
}
+void EditorExportPreset::update_files_to_export() {
+ Vector<String> to_remove;
+ for (Set<String>::Element *E = selected_files.front(); E; E = E->next()) {
+ if (!FileAccess::exists(E->get())) {
+ to_remove.push_back(E->get());
+ }
+ }
+ for (int i = 0; i < to_remove.size(); ++i) {
+ selected_files.erase(to_remove[i]);
+ }
+ EditorExport::singleton->save_presets();
+}
+
Vector<String> EditorExportPreset::get_files_to_export() const {
Vector<String> files;
for (Set<String>::Element *E = selected_files.front(); E; E = E->next()) {
@@ -1298,7 +1311,11 @@ void EditorExport::load_config() {
Vector<String> files = config->get_value(section, "export_files");
for (int i = 0; i < files.size(); i++) {
- preset->add_export_file(files[i]);
+ if (!FileAccess::exists(files[i])) {
+ preset->remove_export_file(files[i]);
+ } else {
+ preset->add_export_file(files[i]);
+ }
}
}
diff --git a/editor/editor_export.h b/editor/editor_export.h
index 4978b39248..8ad8326f10 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -94,6 +94,8 @@ public:
bool has(const StringName &p_property) const { return values.has(p_property); }
+ void update_files_to_export();
+
Vector<String> get_files_to_export() const;
void add_export_file(const String &p_path);
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index e5372a5d47..c53a59604a 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -163,6 +163,7 @@ void ProjectExportDialog::_update_presets() {
if (preset->is_runnable()) {
name += " (" + TTR("Runnable") + ")";
}
+ preset->update_files_to_export();
presets->add_item(name, preset->get_platform()->get_logo());
}