diff options
author | Damien Plisson <damien.plisson@yahoo.fr> | 2009-12-18 19:35:41 +0300 |
---|---|---|
committer | Damien Plisson <damien.plisson@yahoo.fr> | 2009-12-18 19:35:41 +0300 |
commit | 7d19734add32150a13d408adc796c9287e551228 (patch) | |
tree | 3dab6a96b2a9f40630a2f0ed75bdd9bda0f4794c /source/blender/editors/space_file/fsmenu.c | |
parent | be819013174ad5c0978b9575b251ec2ec4003d4e (diff) |
OSX : add mounted network volumes to the system folder list in open/save file dialog
Diffstat (limited to 'source/blender/editors/space_file/fsmenu.c')
-rw-r--r-- | source/blender/editors/space_file/fsmenu.c | 26 |
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); |