[Bf-blender-cvs] [90c9458b2f9] blender2.8: Multi- Objects: MESH_OT_select_face_by_sides by Rainer Trummer

Dalai Felinto noreply at git.blender.org
Mon May 14 15:23:28 CEST 2018


Commit: 90c9458b2f9fe596df30d245cc7b209d18a40059
Author: Dalai Felinto
Date:   Mon May 14 15:21:06 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB90c9458b2f9fe596df30d245cc7b209d18a40059

Multi- Objects: MESH_OT_select_face_by_sides by Rainer Trummer

Maniphest Tasks: T54643
Differential Revision: https://developer.blender.org/D3301

===================================================================

M	source/blender/editors/mesh/editmesh_select.c

===================================================================

diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index a232deed688..f75b5cb7e01 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -3207,21 +3207,27 @@ void MESH_OT_select_linked_pick(wmOperatorType *ot)
 
 static int edbm_select_face_by_sides_exec(bContext *C, wmOperator *op)
 {
-	Object *obedit = CTX_data_edit_object(C);
-	BMEditMesh *em = BKE_editmesh_from_object(obedit);
-	BMFace *efa;
-	BMIter iter;
+	ViewLayer *view_layer = CTX_data_view_layer(C);
+	uint objects_len = 0;
+	const bool extend = RNA_boolean_get(op->ptr, "extend");
 	const int numverts = RNA_int_get(op->ptr, "number");
 	const int type = RNA_enum_get(op->ptr, "type");
+	Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
 
-	if (!RNA_boolean_get(op->ptr, "extend"))
-		EDBM_flag_disable_all(em, BM_ELEM_SELECT);
+	for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
+		Object *obedit = objects[ob_index];
+		BMEditMesh *em = BKE_editmesh_from_object(obedit);
+		BMFace *efa;
+		BMIter iter;
 
-	BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
+		if (!extend)
+			EDBM_flag_disable_all(em, BM_ELEM_SELECT);
+
+		BM_ITER_MESH(efa, &iter, em->bm, BM_FACES_OF_MESH) {
 
-		bool select;
+			bool select;
 
-		switch (type) {
+			switch (type) {
 			case 0:
 				select = (efa->len < numverts);
 				break;
@@ -3238,16 +3244,19 @@ static int edbm_select_face_by_sides_exec(bContext *C, wmOperator *op)
 				BLI_assert(0);
 				select = false;
 				break;
-		}
+			}
 
-		if (select) {
-			BM_face_select_set(em->bm, efa, true);
+			if (select) {
+				BM_face_select_set(em->bm, efa, true);
+			}
 		}
-	}
 
-	EDBM_selectmode_flush(em);
+		EDBM_selectmode_flush(em);
 
-	WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+		WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+	}
+
+	MEM_freeN(objects);
 	return OPERATOR_FINISHED;
 }



More information about the Bf-blender-cvs mailing list