* Added a list of OS X volumes to the file selector bookmarks pane, consistent with...
authorMatt Ebb <matt@mke3.net>
Sat, 2 May 2009 03:09:40 +0000 (03:09 +0000)
committerMatt Ebb <matt@mke3.net>
Sat, 2 May 2009 03:09:40 +0000 (03:09 +0000)
http://mke3.net/blender/devel/2.5/fileselect_volumes.png

source/blender/editors/space_file/file_draw.c
source/blender/editors/space_file/fsmenu.c

index 6184425885edcfd00bb7eae0f022047f8ad70ab8..b4b1145f429ada6856e5d4fd87ce04f805a7a247 100644 (file)
@@ -570,10 +570,13 @@ static void file_draw_fsmenu_category(const bContext *C, ARegion *ar, FSMenuCate
                        BLI_strncpy(bookmark, fname, FILE_MAX);
                
                        sl = strlen(bookmark)-1;
-                       while (bookmark[sl] == '\\' || bookmark[sl] == '/') {
-                               bookmark[sl] = '\0';
-                               sl--;
+                       if (sl > 1) {
+                               while (bookmark[sl] == '\\' || bookmark[sl] == '/') {
+                                       bookmark[sl] = '\0';
+                                       sl--;
+                               }
                        }
+                       
                        if (fsmenu_is_selected(fsmenu, category, i) ) {
                                UI_ThemeColor(TH_HILITE);
                                //uiSetRoundBox(15);    
index 6ef946c9697d7dd892119e267d5eb9f534fda1ef..59e8dcf82e609bc9ecad27d4ad33b7b9e8c4b4e9 100644 (file)
 #include "BLI_winstuff.h"
 #endif
 
+#ifdef __APPLE__
+#include <CoreServices/CoreServices.h>
+
+#include "BKE_utildefines.h"
+#endif
+
 #include "fsmenu.h"  /* include ourselves */
 
 
@@ -303,6 +309,27 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename)
        }
 #endif
 
+#ifdef __APPLE__
+       {
+               OSErr err=noErr;
+               int i;
+               
+               /* loop through all the OS X Volumes, and add them to the SYSTEM section */
+               for (i=1; err!=nsvErr; i++)
+               {
+                       FSRef dir;
+                       unsigned char path[FILE_MAXDIR+FILE_MAXFILE];
+                       
+                       err = FSGetVolumeInfo(kFSInvalidVolumeRefNum, i, NULL, kFSVolInfoNone, NULL, NULL, &dir);
+                       if (err != noErr)
+                               continue;
+                       
+                       FSRefMakePath(&dir, path, FILE_MAXDIR+FILE_MAXFILE);
+                       fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0);
+               }
+       }
+#endif
+
        fp = fopen(filename, "r");
        if (!fp) return;