Revision: 26435
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26435
Author:   campbellbarton
Date:     2010-01-30 16:23:17 +0100 (Sat, 30 Jan 2010)

Log Message:
-----------
[#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.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_header.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_header.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_header.c   
2010-01-30 14:48:46 UTC (rev 26434)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_header.c   
2010-01-30 15:23:17 UTC (rev 26435)
@@ -187,6 +187,7 @@
                        v3d->layact= 1;
        }
        else {
+               int bit;
                nr--;
 
                if(RNA_boolean_get(op->ptr, "extend")) {
@@ -194,21 +195,30 @@
                                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++;
                        }
                }
        }


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to