Selaa lähdekoodia

[macOS] Fix non-ASCII volume name listing, replace deprecated volume listing API. Remove hidden mount points from the volume list.

bruvzg 5 vuotta sitten
vanhempi
commit
d8c2e6a31a
1 muutettua tiedostoa jossa 11 lisäystä ja 4 poistoa
  1. 11 4
      platform/osx/dir_access_osx.mm

+ 11 - 4
platform/osx/dir_access_osx.mm

@@ -48,18 +48,25 @@ String DirAccessOSX::fix_unicode_name(const char *p_name) const {
 }
 
 int DirAccessOSX::get_drive_count() {
-	NSArray *vols = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths];
+	NSArray *res_keys = [NSArray arrayWithObjects:NSURLVolumeURLKey, NSURLIsSystemImmutableKey, nil];
+	NSArray *vols = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:res_keys options:NSVolumeEnumerationSkipHiddenVolumes];
+
 	return [vols count];
 }
 
 String DirAccessOSX::get_drive(int p_drive) {
-	NSArray *vols = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths];
+	NSArray *res_keys = [NSArray arrayWithObjects:NSURLVolumeURLKey, NSURLIsSystemImmutableKey, nil];
+	NSArray *vols = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:res_keys options:NSVolumeEnumerationSkipHiddenVolumes];
 	int count = [vols count];
 
 	ERR_FAIL_INDEX_V(p_drive, count, "");
 
-	NSString *path = vols[p_drive];
-	return String([path UTF8String]);
+	String volname;
+	NSString *path = [vols[p_drive] path];
+
+	volname.parse_utf8([path UTF8String]);
+
+	return volname;
 }
 
 #endif //posix_enabled