diff options
author | Andrea Weikert <elubie@gmx.net> | 2009-01-06 22:22:29 +0300 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2009-01-06 22:22:29 +0300 |
commit | fc28d3cf75abac6b84b72dcdd5581055dded692a (patch) | |
tree | eb69aadd1356fa170941f9827edc89c770de0385 /source/blender/editors/space_file/space_file.c | |
parent | 25e5765f47979484065c18eb1af010a8f23ddcf3 (diff) |
2.5 filebrowser
further cleanup:
- moved struct FileList* back to SpaceFile
- fix for memory related errors and freeing operator in file_free
- removed wmSubWindowSet, we're not doing OpenGL select in filebrowser
- removed drawing of load button when invoked from windowtype pupmenu
2.5 MSVC projectfiles:
- slipped in removal of multires_firstlevel.c in blenkernel
Diffstat (limited to 'source/blender/editors/space_file/space_file.c')
-rw-r--r-- | source/blender/editors/space_file/space_file.c | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index d5d16c07417..ab3554261d3 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -76,19 +76,11 @@ static SpaceLink *file_new(const bContext *C) sfile= MEM_callocN(sizeof(SpaceFile), "initfile"); sfile->spacetype= SPACE_FILE; sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams"); - sfile->params->files = filelist_new(); - - // ED_fileselect_set_params(C, FILE_UNIX, "Load File", "F:\\photos\\2008_Kos", NULL, NULL, 0, 0, 0); - - /* XXX move to context - sfile->dir[0]= '/'; - strcpy(sfile->dir, "F:\\photos\\2008_Kos"); - sfile->type= FILE_UNIX; - strcpy(sfile->title, "Load"); - sfile->prv_h = 96; - sfile->prv_w = 96; - sfile->files = NULL; - */ + sfile->files = filelist_new(); + + ED_fileselect_set_params(C, FILE_UNIX, "", "/", 0, 0, 0); + filelist_setdir(sfile->files, sfile->params->dir); + filelist_settype(sfile->files, sfile->params->type); /* header */ ar= MEM_callocN(sizeof(ARegion), "header for file"); @@ -126,38 +118,49 @@ static void file_free(SpaceLink *sl) { SpaceFile *sfile= (SpaceFile *) sl; + if(sfile->files) { + filelist_free(sfile->files); + filelist_freelib(sfile->files); + MEM_freeN(sfile->files); + sfile->files = 0; + } + if (sfile->params) { - if(sfile->params->files) { - filelist_free(sfile->params->files); - filelist_freelib(sfile->params->files); - MEM_freeN(sfile->params->files); - sfile->params->files = 0; - } if(sfile->params->pupmenu) MEM_freeN(sfile->params->pupmenu); MEM_freeN(sfile->params); sfile->params = 0; } + if (sfile->op) { + WM_operator_free(sfile->op); + } } /* spacetype; init callback */ static void file_init(struct wmWindowManager *wm, ScrArea *sa) -{ +{ } static SpaceLink *file_duplicate(SpaceLink *sl) { + SpaceFile *sfileo= (SpaceFile*)sl; SpaceFile *sfilen= MEM_dupallocN(sl); /* clear or remove stuff from old */ - + sfilen->op = NULL; // XXX check if operator can be duplicated + + sfilen->params= MEM_dupallocN(sfileo->params); + sfilen->params->pupmenu = NULL; + sfilen->files = filelist_new(); + filelist_setdir(sfilen->files, sfilen->params->dir); + filelist_settype(sfilen->files, sfilen->params->type); + return (SpaceLink *)sfilen; } - /* add handlers, stuff you only do once or on area/region changes */ static void file_main_area_init(wmWindowManager *wm, ARegion *ar) { @@ -173,32 +176,32 @@ static void file_main_area_init(wmWindowManager *wm, ARegion *ar) static void file_main_area_draw(const bContext *C, ARegion *ar) { /* draw entirely, view changes should be handled here */ -// SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C); + SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C); FileSelectParams* params = ED_fileselect_get_params(C); View2D *v2d= &ar->v2d; View2DScrollers *scrollers; float col[3]; - if (!params->files) { - params->files = filelist_new(); - filelist_setdir(params->files, params->dir); - filelist_settype(params->files, params->type); + if (!sfile->files) { + sfile->files = filelist_new(); + filelist_setdir(sfile->files, params->dir); + filelist_settype(sfile->files, params->type); } - if (filelist_empty(params->files)) + if (filelist_empty(sfile->files)) { unsigned int filter = 0; - filelist_hidedot(params->files, params->flag & FILE_HIDE_DOT); + filelist_hidedot(sfile->files, params->flag & FILE_HIDE_DOT); if (params->flag & FILE_FILTER) { filter = params->filter ; } else { filter = 0; } - filelist_setfilter(params->files, filter); - filelist_readdir(params->files); + filelist_setfilter(sfile->files, filter); + filelist_readdir(sfile->files); - if(params->sort!=FILE_SORTALPHA) filelist_sort(params->files, params->sort); + if(params->sort!=FILE_SORTALPHA) filelist_sort(sfile->files, params->sort); } |