Skip to content

Commit

Permalink
Fix global class cache file not present when no class name
Browse files Browse the repository at this point in the history
  • Loading branch information
Hilderin committed Jul 31, 2024
1 parent b6dee96 commit 1ed723b
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 5 deletions.
4 changes: 0 additions & 4 deletions core/object/script_language.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -491,10 +491,6 @@ void ScriptServer::save_global_classes() {
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;
Expand Down
1 change: 0 additions & 1 deletion core/object/script_language.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ class ScriptServer {
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 save_global_classes();
static String get_global_class_cache_file_path();

static void init_languages();
static void finish_languages();
Expand Down
9 changes: 9 additions & 0 deletions editor/editor_file_system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
List<StringName> global_classes;
bool must_save = false;
ScriptServer::get_global_class_list(&global_classes);
for (const StringName &class_name : global_classes) {
if (!p_existing_class_names.has(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) {
Expand Down Expand Up @@ -1812,6 +1817,10 @@ void EditorFileSystem::_update_files_icon_path(EditorFileSystemDirectory *edp) {

void EditorFileSystem::_update_script_classes() {
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;
}

Expand Down

0 comments on commit 1ed723b

Please sign in to comment.