[Bf-blender-cvs] [74d3127] master: Fix T44560: Merge Collapse tool - UVs operator panel option ignored with Collapse but not with other merge types.

Bastien Montagne noreply at git.blender.org
Fri May 1 17:11:48 CEST 2015


Commit: 74d31279cd90df312de2078d3323ddcb857e2bbf
Author: Bastien Montagne
Date:   Fri May 1 17:10:39 2015 +0200
Branches: master
https://developer.blender.org/rB74d31279cd90df312de2078d3323ddcb857e2bbf

Fix T44560: Merge Collapse tool - UVs operator panel option ignored with Collapse but not with other merge types.

Was missing parameter for collapse bmesh operator...

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

M	source/blender/bmesh/intern/bmesh_opdefines.c
M	source/blender/bmesh/operators/bmo_dissolve.c
M	source/blender/bmesh/operators/bmo_removedoubles.c
M	source/blender/editors/mesh/editmesh_tools.c

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

diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c
index d0679b9..2ba65f5 100644
--- a/source/blender/bmesh/intern/bmesh_opdefines.c
+++ b/source/blender/bmesh/intern/bmesh_opdefines.c
@@ -359,6 +359,7 @@ static BMOpDefine bmo_collapse_def = {
 	"collapse",
 	/* slots_in */
 	{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */
+	 {"uvs", BMO_OP_SLOT_BOOL}, /* also collapse UVs and such */
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
diff --git a/source/blender/bmesh/operators/bmo_dissolve.c b/source/blender/bmesh/operators/bmo_dissolve.c
index ecb4136..ac0466a 100644
--- a/source/blender/bmesh/operators/bmo_dissolve.c
+++ b/source/blender/bmesh/operators/bmo_dissolve.c
@@ -494,7 +494,7 @@ void bmo_dissolve_limit_exec(BMesh *bm, BMOperator *op)
 
 static void bm_mesh_edge_collapse_flagged(BMesh *bm, const int flag, const short oflag)
 {
-	BMO_op_callf(bm, flag, "collapse edges=%fe", oflag);
+	BMO_op_callf(bm, flag, "collapse edges=%fe uvs=%b", oflag, true);
 }
 
 void bmo_dissolve_degenerate_exec(BMesh *bm, BMOperator *op)
diff --git a/source/blender/bmesh/operators/bmo_removedoubles.c b/source/blender/bmesh/operators/bmo_removedoubles.c
index 871bee6..73b6268 100644
--- a/source/blender/bmesh/operators/bmo_removedoubles.c
+++ b/source/blender/bmesh/operators/bmo_removedoubles.c
@@ -380,8 +380,11 @@ void bmo_collapse_exec(BMesh *bm, BMOperator *op)
 	float min[3], max[3], center[3];
 	unsigned int i, tot;
 	BMOpSlot *slot_targetmap;
-	
-	BMO_op_callf(bm, op->flag, "collapse_uvs edges=%s", op, "edges");
+
+	if (BMO_slot_bool_get(op->slots_in, "uvs")) {
+		BMO_op_callf(bm, op->flag, "collapse_uvs edges=%s", op, "edges");
+	}
+
 	BMO_op_init(bm, &weldop, op->flag, "weld_verts");
 	slot_targetmap = BMO_slot_get(weldop.slots_in, "targetmap");
 
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index 6149631..54acf4a 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -492,7 +492,7 @@ static int edbm_collapse_edge_exec(bContext *C, wmOperator *op)
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_callf(em, op, "collapse edges=%he", BM_ELEM_SELECT))
+	if (!EDBM_op_callf(em, op, "collapse edges=%he uvs=%b", BM_ELEM_SELECT, true))
 		return OPERATOR_CANCELLED;
 
 	EDBM_update_generic(em, true, true);
@@ -2049,9 +2049,7 @@ static int edbm_merge_exec(bContext *C, wmOperator *op)
 			ok = merge_firstlast(em, true, uvs, op);
 			break;
 		case 5:
-			ok = true;
-			if (!EDBM_op_callf(em, op, "collapse edges=%he", BM_ELEM_SELECT))
-				ok = false;
+			ok = EDBM_op_callf(em, op, "collapse edges=%he uvs=%b", BM_ELEM_SELECT, uvs);
 			break;
 		default:
 			BLI_assert(0);




More information about the Bf-blender-cvs mailing list