Merge pull request #94991 from Hilderin/fix-global-script-class-file-no-class
Fix global class cache file not present when no class name
This commit is contained in:
commit
7e1b74b5f6
3 changed files with 9 additions and 5 deletions
|
@ -491,10 +491,6 @@ void ScriptServer::save_global_classes() {
|
||||||
ProjectSettings::get_singleton()->store_global_class_list(gcarr);
|
ProjectSettings::get_singleton()->store_global_class_list(gcarr);
|
||||||
}
|
}
|
||||||
|
|
||||||
String ScriptServer::get_global_class_cache_file_path() {
|
|
||||||
return ProjectSettings::get_singleton()->get_global_class_list_path();
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
|
|
||||||
ScriptCodeCompletionCache *ScriptCodeCompletionCache::singleton = nullptr;
|
ScriptCodeCompletionCache *ScriptCodeCompletionCache::singleton = nullptr;
|
||||||
|
|
|
@ -97,7 +97,6 @@ public:
|
||||||
static void get_global_class_list(List<StringName> *r_global_classes);
|
static void get_global_class_list(List<StringName> *r_global_classes);
|
||||||
static void get_inheriters_list(const StringName &p_base_type, List<StringName> *r_classes);
|
static void get_inheriters_list(const StringName &p_base_type, List<StringName> *r_classes);
|
||||||
static void save_global_classes();
|
static void save_global_classes();
|
||||||
static String get_global_class_cache_file_path();
|
|
||||||
|
|
||||||
static void init_languages();
|
static void init_languages();
|
||||||
static void finish_languages();
|
static void finish_languages();
|
||||||
|
|
|
@ -1353,12 +1353,17 @@ void EditorFileSystem::_thread_func_sources(void *_userdata) {
|
||||||
|
|
||||||
void EditorFileSystem::_remove_invalid_global_class_names(const HashSet<String> &p_existing_class_names) {
|
void EditorFileSystem::_remove_invalid_global_class_names(const HashSet<String> &p_existing_class_names) {
|
||||||
List<StringName> global_classes;
|
List<StringName> global_classes;
|
||||||
|
bool must_save = false;
|
||||||
ScriptServer::get_global_class_list(&global_classes);
|
ScriptServer::get_global_class_list(&global_classes);
|
||||||
for (const StringName &class_name : global_classes) {
|
for (const StringName &class_name : global_classes) {
|
||||||
if (!p_existing_class_names.has(class_name)) {
|
if (!p_existing_class_names.has(class_name)) {
|
||||||
ScriptServer::remove_global_class(class_name);
|
ScriptServer::remove_global_class(class_name);
|
||||||
|
must_save = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (must_save) {
|
||||||
|
ScriptServer::save_global_classes();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String EditorFileSystem::_get_file_by_class_name(EditorFileSystemDirectory *p_dir, const String &p_class_name, EditorFileSystemDirectory::FileInfo *&r_file_info) {
|
String EditorFileSystem::_get_file_by_class_name(EditorFileSystemDirectory *p_dir, const String &p_class_name, EditorFileSystemDirectory::FileInfo *&r_file_info) {
|
||||||
|
@ -1812,6 +1817,10 @@ void EditorFileSystem::_update_files_icon_path(EditorFileSystemDirectory *edp) {
|
||||||
|
|
||||||
void EditorFileSystem::_update_script_classes() {
|
void EditorFileSystem::_update_script_classes() {
|
||||||
if (update_script_paths.is_empty()) {
|
if (update_script_paths.is_empty()) {
|
||||||
|
// Ensure the global class file is always present; it's essential for exports to work.
|
||||||
|
if (!FileAccess::exists(ProjectSettings::get_singleton()->get_global_class_list_path())) {
|
||||||
|
ScriptServer::save_global_classes();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue