diff options
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r-- | source/blender/editors/space_file/file_draw.c | 10 | ||||
-rw-r--r-- | source/blender/editors/space_file/space_file.c | 18 |
2 files changed, 22 insertions, 6 deletions
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index c1e298c426f..043f32c56e7 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -52,6 +52,8 @@ #include "BLT_translation.h" +#include "BLF_api.h" + #include "IMB_imbuf_types.h" #include "DNA_userdef_types.h" @@ -375,7 +377,7 @@ static void file_draw_preview( xco = sx + (int)dx; yco = sy - layout->prv_h + (int)dy; - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); /* shadow */ if (use_dropshadow) { @@ -607,6 +609,8 @@ void file_draw_list(const bContext *C, ARegion *ar) } } + BLF_batch_draw_begin(); + for (i = offset; (i < numfiles) && (i < offset + numfiles_layout); i++) { unsigned int file_selflag; char path[FILE_MAX_LIBEXTRA]; @@ -626,7 +630,7 @@ void file_draw_list(const bContext *C, ARegion *ar) int colorid = (file_selflag & FILE_SEL_SELECTED) ? TH_HILITE : TH_BACK; int shade = (params->highlight_file == i) || (file_selflag & FILE_SEL_HIGHLIGHTED) ? 35 : 0; - BLI_assert(i > 0 || FILENAME_IS_CURRPAR(file->relpath)); + BLI_assert(i == 0 || !FILENAME_IS_CURRPAR(file->relpath)); draw_tile(sx, sy - 1, layout->tile_w + 4, sfile->layout->tile_h + layout->tile_border_y, colorid, shade); } @@ -736,6 +740,8 @@ void file_draw_list(const bContext *C, ARegion *ar) } } + BLF_batch_draw_end(); + UI_block_end(C, block); UI_block_draw(C, block); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 3f26604c23a..0fe51ea1c70 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -189,6 +189,9 @@ static SpaceLink *file_duplicate(SpaceLink *sl) /* clear or remove stuff from old */ sfilen->op = NULL; /* file window doesn't own operators */ + sfilen->previews_timer = NULL; + sfilen->smoothscroll_timer = NULL; + if (sfileo->params) { sfilen->files = filelist_new(sfileo->params->type); sfilen->params = MEM_dupallocN(sfileo->params); @@ -289,8 +292,9 @@ static void file_refresh(const bContext *C, ScrArea *sa) file_tools_region(sa); ED_area_initialize(wm, CTX_wm_window(C), sa); - ED_area_tag_redraw(sa); } + + ED_area_tag_redraw(sa); } static void file_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn, Scene *UNUSED(scene), @@ -304,16 +308,13 @@ static void file_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn, Sce switch (wmn->data) { case ND_SPACE_FILE_LIST: ED_area_tag_refresh(sa); - ED_area_tag_redraw(sa); break; case ND_SPACE_FILE_PARAMS: ED_area_tag_refresh(sa); - ED_area_tag_redraw(sa); break; case ND_SPACE_FILE_PREVIEW: if (sfile->files && filelist_cache_previews_update(sfile->files)) { ED_area_tag_refresh(sa); - ED_area_tag_redraw(sa); } break; } @@ -372,6 +373,15 @@ static void file_main_region_message_subscribe( .notify = ED_area_do_msg_notify_tag_refresh, }; + /* SpaceFile itself. */ + { + PointerRNA ptr; + RNA_pointer_create(&screen->id, &RNA_SpaceFileBrowser, sfile, &ptr); + + /* All properties for this space type. */ + WM_msg_subscribe_rna(mbus, &ptr, NULL, &msg_sub_value_area_tag_refresh, __func__); + } + /* FileSelectParams */ { PointerRNA ptr; |