diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 5eb4ab89e2e..11c65f783bc 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -445,11 +445,20 @@ static Main *blo_find_main(ListBase *mainlist, char *name) { Main *m; Library *lib; + char name1[FILE_MAXDIR+FILE_MAXFILE]; + char libname1[FILE_MAXDIR+FILE_MAXFILE]; + + /* name can be stringcode too */ + strcpy(name1, name); + BLI_convertstringcode(name1, G.sce, 0); for (m= mainlist->first; m; m= m->next) { char *libname= (m->curlib)?m->curlib->name:m->name; - - if (BLI_streq(name, libname)) + + strcpy(libname1, libname); + BLI_convertstringcode(libname1, G.sce, 0); + + if (BLI_streq(name1, libname1)) return m; } @@ -781,7 +790,14 @@ static FileData *filedata_new(void) FileData *blo_openblenderfile(char *name) { - int file= open(name, O_BINARY|O_RDONLY); + int file; + char name1[FILE_MAXDIR+FILE_MAXFILE]; + + /* library files can have stringcodes */ + strcpy(name1, name); + BLI_convertstringcode(name1, G.sce, 0); + + file= open(name1, O_BINARY|O_RDONLY); if (file == -1) { return NULL; @@ -5047,6 +5063,8 @@ void BLO_library_append(SpaceFile *sfile, char *dir, int idcode) blo_freefiledata((FileData*) sfile->libfiledata); sfile->libfiledata= 0; } + + if(sfile->flag & FILE_STRINGCODE) BLI_makestringcode(G.sce, mainl->curlib->name); } /* ************* READ LIBRARY ************** */ diff --git a/source/blender/src/header_filesel.c b/source/blender/src/header_filesel.c index 4333298934a..f274b012726 100644 --- a/source/blender/src/header_filesel.c +++ b/source/blender/src/header_filesel.c @@ -137,7 +137,9 @@ void file_buttons(void) uiDefIconButS(block, ICONTOG|BIT|0, B_SORTFILELIST, ICON_LONGDISPLAY,xco+=XIC,0,XIC,YIC, &sfile->flag, 0, 0, 0, 0, "Toggles long info"); uiDefIconButS(block, TOG|BIT|3, B_RELOADDIR, ICON_GHOST,xco+=XIC,0,XIC,YIC, &sfile->flag, 0, 0, 0, 0, "Hides dot files"); - xco+=XIC+10; + uiDefButBitS(block, TOG, FILE_STRINGCODE, 0, "Relative Paths", xco+=XIC,0,90,YIC, &sfile->flag, 0, 0, 0, 0, "Makes sure returned paths are relative to the current .blend file"); + + xco+=90; if(sfile->type==FILE_LOADLIB) { uiDefButS(block, TOGN|BIT|2, B_REDR, "Append", xco+=XIC,0,100,YIC, &sfile->flag, 0, 0, 0, 0, "Copies selected data into current project");