[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25682] trunk/blender/source/blender/ editors/space_view3d/view3d_header.c: - disallow the change the layer operator in localview.

Campbell Barton ideasman42 at gmail.com
Sun Jan 3 05:21:42 CET 2010


Revision: 25682
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25682
Author:   campbellbarton
Date:     2010-01-03 05:21:40 +0100 (Sun, 03 Jan 2010)

Log Message:
-----------
- disallow the change the layer operator in localview.
- toggle setting the layers (mainly useful when accessed from the keys)

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-03 03:18:48 UTC (rev 25681)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_header.c	2010-01-03 04:21:40 UTC (rev 25682)
@@ -173,6 +173,7 @@
 	ScrArea *sa= CTX_wm_area(C);
 	View3D *v3d= sa->spacedata.first;
 	int nr= RNA_int_get(op->ptr, "nr");
+	int toggle= RNA_boolean_get(op->ptr, "toggle");
 	
 	if(nr < 0)
 		return OPERATOR_CANCELLED;
@@ -188,9 +189,12 @@
 	else {
 		nr--;
 
-		if(RNA_boolean_get(op->ptr, "extend"))
-			v3d->lay |= (1<<nr);
-		else
+		if(RNA_boolean_get(op->ptr, "extend")) {
+			if(toggle && v3d->lay & (1<<nr) && (v3d->lay & ~(1<<nr)))
+				v3d->lay &= ~(1<<nr);
+			else
+				v3d->lay |= (1<<nr);
+		} else
 			v3d->lay = (1<<nr);
 		
 		/* set active layer, ensure to always have one */
@@ -238,6 +242,11 @@
 	return OPERATOR_FINISHED;
 }
 
+int layers_poll(bContext *C)
+{
+	return (ED_operator_view3d_active(C) && CTX_wm_view3d(C)->localvd==NULL);
+}
+
 void VIEW3D_OT_layers(wmOperatorType *ot)
 {
 	/* identifiers */
@@ -248,13 +257,14 @@
 	/* api callbacks */
 	ot->invoke= layers_invoke;
 	ot->exec= layers_exec;
-	ot->poll= ED_operator_view3d_active;
+	ot->poll= layers_poll;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 	
 	RNA_def_int(ot->srna, "nr", 1, 0, 20, "Number", "The layer number to set, zero for all layers", 0, 20);
 	RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Add this layer to the current view layers");
+	RNA_def_boolean(ot->srna, "toggle", 1, "Toggle", "Toggle the layer");
 }
 
 static char *view3d_modeselect_pup(Scene *scene)





More information about the Bf-blender-cvs mailing list