Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Weikert <elubie@gmx.net>2009-07-26 23:23:07 +0400
committerAndrea Weikert <elubie@gmx.net>2009-07-26 23:23:07 +0400
commitd0422dec359e7e10938bc43e93b4fa590f2de3a2 (patch)
treede41d773ce6cda6811c466a6ecb0c1c08cd3db6d /source/blender/editors/space_file
parent6c0e9e21cbd0b20340a1e0bc8f7d06236f3a0909 (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.c35
-rw-r--r--source/blender/editors/space_file/space_file.c16
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);