diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-30 18:23:17 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-30 18:23:17 +0300 |
commit | 80be34d8c91618db97d7d1c77b19183d443efedc (patch) | |
tree | 52ee24d737aaa7692140df43d5e865438e374247 /source/blender/editors/space_view3d/view3d_header.c | |
parent | 026b5bacca3b2aa0f6dc20e10d74b59faeeb4961 (diff) |
[#20550] Workflow Odity For Objects On Layers Not Being Viewed
always keep the first editmode objects layer enabled in cases where switching hides the editmode object.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_header.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index bf774442812..d3569034dff 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -187,6 +187,7 @@ static int layers_exec(bContext *C, wmOperator *op) v3d->layact= 1; } else { + int bit; nr--; if(RNA_boolean_get(op->ptr, "extend")) { @@ -194,21 +195,30 @@ static int layers_exec(bContext *C, wmOperator *op) v3d->lay &= ~(1<<nr); else v3d->lay |= (1<<nr); - } else + } else { v3d->lay = (1<<nr); + + /* sanity check - when in editmode disallow switching the editmode layer off since its confusing + * an alternative would be to always draw the editmode object. */ + if(scene->obedit && (scene->obedit->lay & v3d->lay)==0) { + for(bit=0; bit<32; bit++) { + if(scene->obedit->lay & (1<<bit)) { + v3d->lay |= 1<<bit; + break; + } + } + } + } /* set active layer, ensure to always have one */ if(v3d->lay & (1<<nr)) v3d->layact= 1<<nr; else if((v3d->lay & v3d->layact)==0) { - int bit= 0; - - while(bit<32) { + for(bit=0; bit<32; bit++) { if(v3d->lay & (1<<bit)) { v3d->layact= 1<<bit; break; } - bit++; } } } |