diff options
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_header.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 2ee4f7a9e55..2656127d73c 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -139,10 +139,11 @@ static void handle_view3d_lock(bContext *C) static int view3d_layers_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; + Base *base; + int oldlay= v3d->lay; int nr= RNA_int_get(op->ptr, "nr"); int toggle= RNA_boolean_get(op->ptr, "toggle"); @@ -200,8 +201,14 @@ static int view3d_layers_exec(bContext *C, wmOperator *op) if(v3d->scenelock) handle_view3d_lock(C); - /* new layers might need unflushed events events */ - DAG_scene_update_flags(bmain, scene, v3d->lay, FALSE); /* tags all that moves and flushes */ + /* XXX new layers might need updates, there is no provision yet to detect if that's needed */ + oldlay= ~oldlay & v3d->lay; + for (base= scene->base.first; base; base= base->next) { + if(base->lay & oldlay) + base->object->recalc= OB_RECALC_OB|OB_RECALC_DATA; + if(base->lay & oldlay) + printf("recalc %s\n", base->object->id.name+2); + } ED_area_tag_redraw(sa); |