diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c index 0022ed9ae24..2b44a36a0d8 100644 --- a/source/blender/blenkernel/intern/layer.c +++ b/source/blender/blenkernel/intern/layer.c @@ -1270,9 +1270,10 @@ void BKE_layer_eval_view_layer( view_layer->object_bases_array[base_index++] = base; } + /* Flush back base flag to the original view layer for editing. */ + ViewLayer *view_layer_orig = DEG_get_input_view_layer(depsgraph); if (view_layer == DEG_get_evaluated_view_layer(depsgraph)) { - ViewLayer *view_layer_orig = DEG_get_input_view_layer(depsgraph); Base *base_orig = view_layer_orig->object_bases.first; const Base *base_eval = view_layer->object_bases.first; while (base_orig != NULL) { @@ -1281,6 +1282,14 @@ void BKE_layer_eval_view_layer( base_eval = base_eval->next; } } + + /* Hidden objects can't be active. */ + if (view_layer->basact && !(view_layer->basact->flag & BASE_VISIBLED)) { + view_layer->basact = NULL; + } + if (view_layer_orig->basact && !(view_layer_orig->basact->flag & BASE_VISIBLED)) { + view_layer_orig->basact = NULL; + } } void BKE_layer_eval_view_layer_indexed(