Browse Source

Fix duplicated folder reference in Godot Editor after changing filename case

(cherry picked from commit 87b5a56ddfa70b094e0655f20e4226b46fcb40f1)
Sofox 1 year ago
parent
commit
946cb13d9b
1 changed files with 14 additions and 3 deletions
  1. 14 3
      editor/editor_file_system.cpp

+ 14 - 3
editor/editor_file_system.cpp

@@ -1350,6 +1350,10 @@ bool EditorFileSystem::_find_file(const String &p_file, EditorFileSystemDirector
 
 
 	String f = ProjectSettings::get_singleton()->localize_path(p_file);
 	String f = ProjectSettings::get_singleton()->localize_path(p_file);
 
 
+	// Note: Only checks if base directory is case sensitive.
+	Ref<DirAccess> dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+	bool fs_case_sensitive = dir->is_case_sensitive("res://");
+
 	if (!f.begins_with("res://")) {
 	if (!f.begins_with("res://")) {
 		return false;
 		return false;
 	}
 	}
@@ -1373,9 +1377,16 @@ bool EditorFileSystem::_find_file(const String &p_file, EditorFileSystemDirector
 
 
 		int idx = -1;
 		int idx = -1;
 		for (int j = 0; j < fs->get_subdir_count(); j++) {
 		for (int j = 0; j < fs->get_subdir_count(); j++) {
-			if (fs->get_subdir(j)->get_name() == path[i]) {
-				idx = j;
-				break;
+			if (fs_case_sensitive) {
+				if (fs->get_subdir(j)->get_name() == path[i]) {
+					idx = j;
+					break;
+				}
+			} else {
+				if (fs->get_subdir(j)->get_name().to_lower() == path[i].to_lower()) {
+					idx = j;
+					break;
+				}
 			}
 			}
 		}
 		}