[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47613] trunk/blender/source/blender/ editors/object/object_select.c: Fix #31752: Select All By Layer seems not to work when object belongs to several layers

Sergey Sharybin sergey.vfx at gmail.com
Fri Jun 8 17:14:52 CEST 2012


Revision: 47613
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47613
Author:   nazgul
Date:     2012-06-08 15:14:45 +0000 (Fri, 08 Jun 2012)
Log Message:
-----------
Fix #31752: Select All By Layer seems not to work when object belongs to several layers

Added option which changes match policy from exact match and shared layers when
selecting objects by layer.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_select.c

Modified: trunk/blender/source/blender/editors/object/object_select.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_select.c	2012-06-08 14:49:07 UTC (rev 47612)
+++ trunk/blender/source/blender/editors/object/object_select.c	2012-06-08 15:14:45 UTC (rev 47613)
@@ -708,10 +708,11 @@
 static int object_select_by_layer_exec(bContext *C, wmOperator *op)
 {
 	unsigned int layernum;
-	short extend;
+	short extend, match;
 	
 	extend = RNA_boolean_get(op->ptr, "extend");
 	layernum = RNA_int_get(op->ptr, "layers");
+	match = RNA_enum_get(op->ptr, "match");
 	
 	if (extend == 0) {
 		CTX_DATA_BEGIN (C, Base *, base, visible_bases)
@@ -723,7 +724,14 @@
 		
 	CTX_DATA_BEGIN (C, Base *, base, visible_bases)
 	{
-		if (base->lay == (1 << (layernum - 1)))
+		int ok = 0;
+
+		if (match == 1) /* exact */
+			ok = (base->lay == (1 << (layernum - 1)));
+		else /* shared layers */
+			ok = (base->lay & (1 << (layernum - 1)));
+
+		if (ok)
 			ED_base_object_select(base, BA_SELECT);
 	}
 	CTX_DATA_END;
@@ -736,6 +744,12 @@
 
 void OBJECT_OT_select_by_layer(wmOperatorType *ot)
 {
+	static EnumPropertyItem match_items[] = {
+		{1, "EXACT", 0, "Exact Match", ""},
+		{2, "SHARED", 0, "Shared Layers", ""},
+		{0, NULL, 0, NULL, NULL}
+	};
+
 	/* identifiers */
 	ot->name = "Select by Layer";
 	ot->description = "Select all visible objects on a layer";
@@ -750,6 +764,7 @@
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 	
 	/* properties */
+	RNA_def_enum(ot->srna, "match", match_items, 0, "Match", "");
 	RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first");
 	RNA_def_int(ot->srna, "layers", 1, 1, 20, "Layer", "", 1, 20);
 }




More information about the Bf-blender-cvs mailing list