1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-12 13:20:55 +00:00

Update autoload references when moving files.

Prior to this, file references in autoload were not updated when a
script was moved or renamed. This adds extra logic to update the
autoload references when updating project settings.

Fixes #22995.
This commit is contained in:
Zaven Muradyan
2018-10-13 22:05:53 -07:00
parent 451e5fd051
commit ee74c7808b
2 changed files with 19 additions and 0 deletions

View File

@@ -1172,6 +1172,23 @@ void FileSystemDock::_update_project_settings_after_move(const Map<String, Strin
}
};
}
// Also search for the file in autoload, as they are stored differently from normal files.
List<PropertyInfo> property_list;
ProjectSettings::get_singleton()->get_property_list(&property_list);
for (const List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
if (E->get().name.begins_with("autoload/")) {
// If the autoload resource paths has a leading "*", it indicates that it is a Singleton,
// so we have to handle both cases when updating.
String autoload = GLOBAL_GET(E->get().name);
String autoload_singleton = autoload.substr(1, autoload.length());
if (p_renames.has(autoload)) {
ProjectSettings::get_singleton()->set_setting(E->get().name, p_renames[autoload]);
} else if (autoload.begins_with("*") && p_renames.has(autoload_singleton)) {
ProjectSettings::get_singleton()->set_setting(E->get().name, "*" + p_renames[autoload_singleton]);
}
}
}
ProjectSettings::get_singleton()->save();
}