diff options
author | Andrea Weikert <elubie@gmx.net> | 2009-07-12 17:06:52 +0400 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2009-07-12 17:06:52 +0400 |
commit | 5f8f2fc33a2f2fd363be16a36d14fa3b3f1ad78a (patch) | |
tree | 115e70af47ebb78ca0768a2b58dc3e9128484ba4 /source | |
parent | 78703a9ef8983ce513c1d428ba947dfbe1a58f97 (diff) |
2.5 filebrowser
* bugfix: parent on linux didn't account for first slash
* added some BLI_cleanup_dir to prevent weird directory names
* revert to old directory if user types bogus text.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenlib/intern/util.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_file/file_ops.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_file/filesel.c | 18 |
3 files changed, 14 insertions, 8 deletions
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c index a236defc515..78a4599b3b3 100644 --- a/source/blender/blenlib/intern/util.c +++ b/source/blender/blenlib/intern/util.c @@ -502,7 +502,7 @@ int BLI_has_parent(char *path) BLI_add_slash(path); len = strlen(path)-1; - while (len) { + while (len>=0) { if ((path[len] == '\\') || (path[len] == '/')) slashes++; len--; diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 8f1d2598c61..0d36bac7505 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -559,6 +559,7 @@ int file_parent_exec(bContext *C, wmOperator *unused) if(sfile->params) { if (BLI_has_parent(sfile->params->dir)) { BLI_parent_dir(sfile->params->dir); + BLI_cleanup_dir(G.sce, sfile->params->dir); file_change_dir(sfile); WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL); } @@ -724,6 +725,7 @@ int file_directory_exec(bContext *C, wmOperator *unused) if (sfile->params->dir[0] == '\0') get_default_root(sfile->params->dir); #endif + BLI_cleanup_dir(G.sce, sfile->params->dir); BLI_add_slash(sfile->params->dir); file_change_dir(sfile); WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL); diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index c81dab454f8..30712ea0b07 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -301,16 +301,20 @@ FileLayout* ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *ar void file_change_dir(struct SpaceFile *sfile) { - if (sfile->params && BLI_exists(sfile->params->dir)) { - filelist_setdir(sfile->files, sfile->params->dir); + if (sfile->params) { + if (BLI_exists(sfile->params->dir)) { + filelist_setdir(sfile->files, sfile->params->dir); - if(folderlist_clear_next(sfile)) - folderlist_free(sfile->folders_next); + if(folderlist_clear_next(sfile)) + folderlist_free(sfile->folders_next); - folderlist_pushdir(sfile->folders_prev, sfile->params->dir); + folderlist_pushdir(sfile->folders_prev, sfile->params->dir); - filelist_free(sfile->files); - sfile->params->active_file = -1; + filelist_free(sfile->files); + sfile->params->active_file = -1; + } else { + BLI_strncpy(sfile->params->dir, filelist_dir(sfile->files), FILE_MAX); + } } } |