diff options
Diffstat (limited to 'source/blender/editors/space_file/space_file.c')
-rw-r--r-- | source/blender/editors/space_file/space_file.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 039ab3d6907..993b1d9b69c 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -420,6 +420,15 @@ static void file_on_reload_callback_call(SpaceFile *sfile) sfile->runtime->on_reload_custom_data = NULL; } +static void file_reset_filelist_showing_main_data(ScrArea *area, SpaceFile *sfile) +{ + if (sfile->files && filelist_needs_reset_on_main_changes(sfile->files)) { + /* Full refresh of the file list if local asset data was changed. Refreshing this view + * is cheap and users expect this to be updated immediately. */ + file_tag_reset_list(area, sfile); + } +} + static void file_listener(const wmSpaceTypeListenerParams *params) { ScrArea *area = params->area; @@ -446,6 +455,11 @@ static void file_listener(const wmSpaceTypeListenerParams *params) ED_area_tag_refresh(area); } break; + case ND_SPACE_CHANGED: + /* If the space was just turned into a file/asset browser, the file-list may need to be + * updated to reflect latest changes in main data. */ + file_reset_filelist_showing_main_data(area, sfile); + break; } switch (wmn->action) { case NA_JOB_FINISHED: @@ -462,11 +476,7 @@ static void file_listener(const wmSpaceTypeListenerParams *params) case NA_ADDED: case NA_REMOVED: case NA_EDITED: - if (sfile->files && filelist_needs_reset_on_main_changes(sfile->files)) { - /* Full refresh of the file list if local asset data was changed. Refreshing this view - * is cheap and users expect this to be updated immediately. */ - file_tag_reset_list(area, sfile); - } + file_reset_filelist_showing_main_data(area, sfile); break; } break; @@ -890,13 +900,11 @@ static void file_id_remap(ScrArea *area, SpaceLink *sl, ID *UNUSED(old_id), ID * { SpaceFile *sfile = (SpaceFile *)sl; - /* If the file shows main data (IDs), tag it for reset. */ - if (sfile->files && filelist_needs_reset_on_main_changes(sfile->files)) { - /* Full refresh of the file list if main data was changed, don't even attempt remap pointers. - * We could give file list types a id-remap callback, but it's probably not worth it. - * Refreshing local file lists is relatively cheap. */ - file_tag_reset_list(area, sfile); - } + /* If the file shows main data (IDs), tag it for reset. + * Full reset of the file list if main data was changed, don't even attempt remap pointers. + * We could give file list types a id-remap callback, but it's probably not worth it. + * Refreshing local file lists is relatively cheap. */ + file_reset_filelist_showing_main_data(area, sfile); } /* only called once, from space/spacetypes.c */ |