diff options
author | Andrea Weikert <elubie@gmx.net> | 2009-07-26 23:23:07 +0400 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2009-07-26 23:23:07 +0400 |
commit | d0422dec359e7e10938bc43e93b4fa590f2de3a2 (patch) | |
tree | de41d773ce6cda6811c466a6ecb0c1c08cd3db6d /source/blender/editors/space_file | |
parent | 6c0e9e21cbd0b20340a1e0bc8f7d06236f3a0909 (diff) |
2.5 file browser
* fix some notifiers, so directory is correctly shown
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r-- | source/blender/editors/space_file/file_ops.c | 35 | ||||
-rw-r--r-- | source/blender/editors/space_file/space_file.c | 16 |
2 files changed, 33 insertions, 18 deletions
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 46bfa022914..8e64f2a594a 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -105,12 +105,18 @@ static void file_deselect_all(SpaceFile* sfile) } } -static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short val) +typedef enum FileSelect { FILE_SELECT_DIR = 1, + FILE_SELECT_FILE = 2 } FileSelect; + + +static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short val) { int first_file = -1; int last_file = -1; int act_file; short selecting = (val == LEFTMOUSE); + FileSelect retval = FILE_SELECT_FILE; + FileSelectParams *params = ED_fileselect_get_params(sfile); // FileLayout *layout = ED_fileselect_get_layout(sfile, ar); @@ -147,25 +153,18 @@ static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short v BLI_add_slash(params->dir); params->file[0] = '\0'; file_change_dir(sfile); + retval = FILE_SELECT_DIR; } } else if (file) { if (file->relname) { BLI_strncpy(params->file, file->relname, FILE_MAXFILE); - /* XXX - if(event==MIDDLEMOUSE && filelist_gettype(sfile->files)) - imasel_execute(sfile); - */ } } - /* XXX - if(BIF_filelist_gettype(sfile->files)==FILE_MAIN) { - active_imasel_object(sfile); - } - */ } + return retval; } @@ -185,8 +184,11 @@ static int file_border_select_exec(bContext *C, wmOperator *op) BLI_isect_rcti(&(ar->v2d.mask), &rect, &rect); - file_select(sfile, ar, &rect, val ); - WM_event_add_notifier(C, NC_WINDOW, NULL); + if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, val )) { + WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL); + } else { + WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL); + } return OPERATOR_FINISHED; } @@ -226,8 +228,11 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event) /* single select, deselect all selected first */ file_deselect_all(sfile); - file_select(sfile, ar, &rect, val ); - WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL); + if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, val )) { + WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL); + } else { + WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL); + } } return OPERATOR_FINISHED; } @@ -306,7 +311,7 @@ static int bookmark_select_invoke(bContext *C, wmOperator *op, wmEvent *event) file_change_dir(sfile); params->file[0] = '\0'; - WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL); + WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL); } return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index cdf65fc5af2..fdc3a927c5e 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -469,10 +469,19 @@ static void file_ui_area_draw(const bContext *C, ARegion *ar) UI_view2d_view_restore(C); } -//static void file_main_area_listener(ARegion *ar, wmNotifier *wmn) -//{ +static void file_ui_area_listener(ARegion *ar, wmNotifier *wmn) +{ /* context changes */ -//} + switch(wmn->category) { + case NC_FILE: + switch (wmn->data) { + case ND_FILELIST: + ED_region_tag_redraw(ar); + break; + } + break; + } +} /* only called once, from space/spacetypes.c */ void ED_spacetype_file(void) @@ -515,6 +524,7 @@ void ED_spacetype_file(void) art->regionid = RGN_TYPE_UI; art->minsizey= 60; art->keymapflag= ED_KEYMAP_UI; + art->listener= file_ui_area_listener; art->init= file_ui_area_init; art->draw= file_ui_area_draw; BLI_addhead(&st->regiontypes, art); |