Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorDamien Plisson <damien.plisson@yahoo.fr>2009-12-18 19:35:41 +0300
committerDamien Plisson <damien.plisson@yahoo.fr>2009-12-18 19:35:41 +0300
commit7d19734add32150a13d408adc796c9287e551228 (patch)
tree3dab6a96b2a9f40630a2f0ed75bdd9bda0f4794c /source
parentbe819013174ad5c0978b9575b251ec2ec4003d4e (diff)
OSX : add mounted network volumes to the system folder list in open/save file dialog
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_file/fsmenu.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c
index bd39a10f661..214c5ff685b 100644
--- a/source/blender/editors/space_file/fsmenu.c
+++ b/source/blender/editors/space_file/fsmenu.c
@@ -345,7 +345,7 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename)
CFURLRef cfURL = NULL;
CFStringRef pathString = NULL;
- /* First get mounted volumes */
+ /* First get local mounted volumes */
list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL);
pathesArray = LSSharedFileListCopySnapshot(list, &seed);
pathesCount = CFArrayGetCount(pathesArray);
@@ -374,7 +374,29 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename)
CFRelease(pathesArray);
CFRelease(list);
- /* Then get user favorite places */
+ /* Then get network volumes */
+ err = noErr;
+ for (i=1; err!=nsvErr; i++)
+ {
+ FSRef dir;
+ FSVolumeRefNum volRefNum;
+ struct GetVolParmsInfoBuffer volParmsBuffer;
+ unsigned char path[FILE_MAXDIR+FILE_MAXFILE];
+
+ err = FSGetVolumeInfo(kFSInvalidVolumeRefNum, i, &volRefNum, kFSVolInfoNone, NULL, NULL, &dir);
+ if (err != noErr)
+ continue;
+
+ err = FSGetVolumeParms(volRefNum, &volParmsBuffer, sizeof(volParmsBuffer));
+ if ((err != noErr) || (volParmsBuffer.vMServerAdr == 0)) /* Exclude local devices */
+ continue;
+
+
+ FSRefMakePath(&dir, path, FILE_MAXDIR+FILE_MAXFILE);
+ fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0);
+ }
+
+ /* Finally get user favorite places */
list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL);
pathesArray = LSSharedFileListCopySnapshot(list, &seed);
pathesCount = CFArrayGetCount(pathesArray);