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.
(cherry picked from commit 44094b082d
)
This commit is contained in:
parent
c87128fa06
commit
0efa59bfdc
3 changed files with 21 additions and 1 deletions
|
@ -96,6 +96,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;
|
||||
|
@ -1382,7 +1395,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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -95,6 +95,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);
|
||||
|
|
|
@ -161,6 +161,7 @@ void ProjectExportDialog::_update_presets() {
|
|||
String name = preset->get_name();
|
||||
if (preset->is_runnable())
|
||||
name += " (" + TTR("Runnable") + ")";
|
||||
preset->update_files_to_export();
|
||||
presets->add_item(name, preset->get_platform()->get_logo());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue