[Bf-blender-cvs] [37573632f03] temp-object-multi-mode: Merge branch '28' into temp-object-multi-mode

Campbell Barton noreply at git.blender.org
Wed Mar 14 08:11:14 CET 2018


Commit: 37573632f0342483e528873fc0224ade83b84f7b
Author: Campbell Barton
Date:   Wed Mar 14 18:18:40 2018 +1100
Branches: temp-object-multi-mode
https://developer.blender.org/rB37573632f0342483e528873fc0224ade83b84f7b

Merge branch '28' into temp-object-multi-mode

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



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

diff --cc source/blender/editors/mesh/editmesh_select.c
index 4676353dff0,a6bbebb834e..ce44eaaaa0e
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@@ -1801,48 -1796,35 +1834,53 @@@ void MESH_OT_edgering_select(wmOperator
  	RNA_def_boolean(ot->srna, "ring", 1, "Select Ring", "Select ring");
  }
  
- /* ******************** (de)select all operator **************** */
+ /** \} */
+ 
+ /* -------------------------------------------------------------------- */
+ /** \name (De)Select All Operator
+  * \{ */
+ 
  static int edbm_select_all_exec(bContext *C, wmOperator *op)
  {
 -	Object *obedit = CTX_data_edit_object(C);
 -	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 -	const int action = RNA_enum_get(op->ptr, "action");
 +	ViewLayer *view_layer = CTX_data_view_layer(C);
 +	int action = RNA_enum_get(op->ptr, "action");
 +
 +	uint objects_len = 0;
 +	Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(
 +	        view_layer, &objects_len,
 +	        .no_dupe_data = true);
 +
 +	if (action == SEL_TOGGLE) {
 +		action = SEL_SELECT;
 +		for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
 +			Object *obedit = objects[ob_index];
 +			BMEditMesh *em = BKE_editmesh_from_object(obedit);
 +			if (em->bm->totvertsel || em->bm->totedgesel || em->bm->totfacesel) {
 +				action = SEL_DESELECT;
 +				break;
 +			}
 +		}
 +	}
  
 -	switch (action) {
 -		case SEL_TOGGLE:
 -			EDBM_select_toggle_all(em);
 -			break;
 -		case SEL_SELECT:
 -			EDBM_flag_enable_all(em, BM_ELEM_SELECT);
 -			break;
 -		case SEL_DESELECT:
 -			EDBM_flag_disable_all(em, BM_ELEM_SELECT);
 -			break;
 -		case SEL_INVERT:
 -			EDBM_select_swap(em);
 -			EDBM_selectmode_flush(em);
 -			break;
 +	for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
 +		Object *obedit = objects[ob_index];
 +		BMEditMesh *em = BKE_editmesh_from_object(obedit);
 +		switch (action) {
 +			case SEL_SELECT:
 +				EDBM_flag_enable_all(em, BM_ELEM_SELECT);
 +				break;
 +			case SEL_DESELECT:
 +				EDBM_flag_disable_all(em, BM_ELEM_SELECT);
 +				break;
 +			case SEL_INVERT:
 +				EDBM_select_swap(em);
 +				EDBM_selectmode_flush(em);
 +				break;
 +		}
 +		WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
  	}
  
 -	WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
 +	MEM_SAFE_FREE(objects);
  
  	return OPERATOR_FINISHED;
  }
@@@ -2261,10 -2238,10 +2316,11 @@@ void EDBM_selectmode_convert(BMEditMes
  }
  
  /* user facing function, does notification */
- bool EDBM_selectmode_toggle(bContext *C, const short selectmode_new,
-                             const int action, const bool use_extend, const bool use_expand)
+ bool EDBM_selectmode_toggle(
+         bContext *C, const short selectmode_new,
+         const int action, const bool use_extend, const bool use_expand)
  {
 +	EvaluationContext eval_ctx;
  	ToolSettings *ts = CTX_data_tool_settings(C);
  	Object *obedit = CTX_data_edit_object(C);
  	BMEditMesh *em = NULL;
diff --cc source/blender/editors/mesh/editmesh_tools.c
index 0eede2f2eb5,ce7610b5d69..663f8df8bf8
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@@ -87,19 -87,13 +87,23 @@@
  
  #define USE_FACE_CREATE_SEL_EXTEND
  
+ /* -------------------------------------------------------------------- */
+ /** \name Subdivide Operator
+  * \{ */
+ 
  static int edbm_subdivide_exec(bContext *C, wmOperator *op)
  {
 -	Object *obedit = CTX_data_edit_object(C);
 +	ViewLayer *view_layer = CTX_data_view_layer(C);
 +
 +	uint objects_len = 0;
 +	Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(
 +	        view_layer, &objects_len,
 +	        .no_dupe_data = true);
 +
 +	/* no indent for diff noise. */
 +	for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
 +	Object *obedit = objects[ob_index];
 +
  	BMEditMesh *em = BKE_editmesh_from_object(obedit);
  	const int cuts = RNA_int_get(op->ptr, "number_cuts");
  	float smooth = RNA_float_get(op->ptr, "smoothness");
@@@ -4009,27 -4147,15 +4204,33 @@@ void MESH_OT_quads_convert_to_tris(wmOp
  	             "Polygon Method", "Method for splitting the polygons into triangles");
  }
  
+ /** \} */
+ 
+ /* -------------------------------------------------------------------- */
+ /** \name Convert to Quads Operator
+  * \{ */
+ 
  static int edbm_tris_convert_to_quads_exec(bContext *C, wmOperator *op)
  {
 -	Object *obedit = CTX_data_edit_object(C);
 +	ViewLayer *view_layer = CTX_data_view_layer(C);
 +
 +	uint objects_len = 0;
 +	Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(
 +	        view_layer, &objects_len,
 +	        .no_dupe_data = true);
 +
 +	bool is_face_pair;
 +
 +	{
 +		int totelem_sel[3];
 +		EDBM_mesh_stats_multi(objects, objects_len, NULL, totelem_sel);
 +		is_face_pair = (totelem_sel[2] == 2);
 +	}
 +
 +	/* no indent for diff noise. */
 +	for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
 +	Object *obedit = objects[ob_index];
 +
  	BMEditMesh *em = BKE_editmesh_from_object(obedit);
  	bool do_seam, do_sharp, do_uvs, do_vcols, do_materials;
  	float angle_face_threshold, angle_shape_threshold;
@@@ -4570,32 -4719,19 +4796,38 @@@ void MESH_OT_dissolve_limited(wmOperato
  	                  "Delimit dissolve operation");
  }
  
+ /** \} */
+ 
+ /* -------------------------------------------------------------------- */
+ /** \name Degenerate Dissolve Operator
+  * \{ */
+ 
  static int edbm_dissolve_degenerate_exec(bContext *C, wmOperator *op)
  {
 -	Object *obedit = CTX_data_edit_object(C);
 -	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 +	ViewLayer *view_layer = CTX_data_view_layer(C);
 +	int totelem_old[3] = {0, 0, 0};
 +	int totelem_new[3] = {0, 0, 0};
 +
 +	uint objects_len = 0;
 +	Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(
 +	        view_layer, &objects_len,
 +	        .no_dupe_data = true);
 +
 +	for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
 +		Object *obedit = objects[ob_index];
 +		BMEditMesh *em = BKE_editmesh_from_object(obedit);
 +		BMesh *bm = em->bm;
 +		totelem_old[0] += bm->totvert;
 +		totelem_old[1] += bm->totedge;
 +		totelem_old[2] += bm->totface;
 +	} /* objects */
 +
  	const float thresh = RNA_float_get(op->ptr, "threshold");
 +	
 +	for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
 +	Object *obedit = objects[ob_index];
 +	BMEditMesh *em = BKE_editmesh_from_object(obedit);
  	BMesh *bm = em->bm;
 -	const int totelem[3] = {bm->totvert, bm->totedge, bm->totface};
  
  	if (!EDBM_op_callf(
  	        em, op,



More information about the Bf-blender-cvs mailing list