BMesh dissolve: enable use_verts for edge dissolve (by default)

This commit is contained in:
Campbell Barton 2014-11-04 17:05:23 +01:00
parent 04c0a46570
commit 6566013c91

@ -3502,10 +3502,16 @@ void MESH_OT_tris_convert_to_quads(wmOperatorType *ot)
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/* Dissolve */ /* Dissolve */
static void edbm_dissolve_prop__use_verts(wmOperatorType *ot) static void edbm_dissolve_prop__use_verts(wmOperatorType *ot, bool value, int flag)
{ {
RNA_def_boolean(ot->srna, "use_verts", 0, "Dissolve Verts", PropertyRNA *prop;
"Dissolve remaining vertices");
prop = RNA_def_boolean(ot->srna, "use_verts", value, "Dissolve Verts",
"Dissolve remaining vertices");
if (flag) {
RNA_def_property_flag(prop, flag);
}
} }
static void edbm_dissolve_prop__use_face_split(wmOperatorType *ot) static void edbm_dissolve_prop__use_face_split(wmOperatorType *ot)
{ {
@ -3590,7 +3596,7 @@ void MESH_OT_dissolve_edges(wmOperatorType *ot)
/* flags */ /* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
edbm_dissolve_prop__use_verts(ot); edbm_dissolve_prop__use_verts(ot, true, 0);
edbm_dissolve_prop__use_face_split(ot); edbm_dissolve_prop__use_face_split(ot);
} }
@ -3629,7 +3635,7 @@ void MESH_OT_dissolve_faces(wmOperatorType *ot)
/* flags */ /* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
edbm_dissolve_prop__use_verts(ot); edbm_dissolve_prop__use_verts(ot, false, 0);
} }
@ -3637,6 +3643,15 @@ static int edbm_dissolve_mode_exec(bContext *C, wmOperator *op)
{ {
Object *obedit = CTX_data_edit_object(C); Object *obedit = CTX_data_edit_object(C);
BMEditMesh *em = BKE_editmesh_from_object(obedit); BMEditMesh *em = BKE_editmesh_from_object(obedit);
PropertyRNA *prop;
prop = RNA_struct_find_property(op->ptr, "use_verts");
if (!RNA_property_is_set(op->ptr, prop)) {
/* always enable in edge-mode */
if ((em->selectmode & SCE_SELECT_FACE) == 0) {
RNA_property_boolean_set(op->ptr, prop, true);
}
}
if (em->selectmode & SCE_SELECT_VERTEX) { if (em->selectmode & SCE_SELECT_VERTEX) {
return edbm_dissolve_verts_exec(C, op); return edbm_dissolve_verts_exec(C, op);
@ -3663,7 +3678,7 @@ void MESH_OT_dissolve_mode(wmOperatorType *ot)
/* flags */ /* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
edbm_dissolve_prop__use_verts(ot); edbm_dissolve_prop__use_verts(ot, false, PROP_SKIP_SAVE);
edbm_dissolve_prop__use_face_split(ot); edbm_dissolve_prop__use_face_split(ot);
edbm_dissolve_prop__use_boundary_tear(ot); edbm_dissolve_prop__use_boundary_tear(ot);
} }