Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-01-30 18:23:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-01-30 18:23:17 +0300
commit80be34d8c91618db97d7d1c77b19183d443efedc (patch)
tree52ee24d737aaa7692140df43d5e865438e374247 /source/blender/editors/space_view3d/view3d_header.c
parent026b5bacca3b2aa0f6dc20e10d74b59faeeb4961 (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.c20
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++;
}
}
}