fix for bridge tool selection flushing (after recent api change), also exposed bug in bmesh edgering-subdiv operator.

This commit is contained in:
Campbell Barton 2013-07-27 05:57:20 +00:00
parent 91fc92794c
commit a0969adb4e
2 changed files with 17 additions and 6 deletions

@ -1167,6 +1167,7 @@ void bmo_subdivide_edgering_exec(BMesh *bm, BMOperator *op)
bm_edgering_pair_ringsubd(bm, lpair, el_store_a, el_store_b,
interp_mode, cuts, smooth, falloff_cache);
bm_edgering_pair_store_free(lpair, interp_mode);
change = true;
}
else {
BMO_error_raise(bm, op, BMERR_INVALID_SELECTION,
@ -1217,6 +1218,7 @@ void bmo_subdivide_edgering_exec(BMesh *bm, BMOperator *op)
bm_edgering_pair_ringsubd(bm, lpair, el_store_a, el_store_b,
interp_mode, cuts, smooth, falloff_cache);
bm_edgering_pair_store_free(lpair, interp_mode);
change = true;
}
BLI_assert(bm_verts_tag_count(bm) == 0);
@ -1229,6 +1231,6 @@ cleanup:
/* flag output */
if (change) {
BMO_slot_buffer_flag_enable(bm, op->slots_out, "faces.out", BM_FACE, FACE_OUT);
BMO_slot_buffer_from_enabled_flag(bm, op, op->slots_out, "faces.out", BM_FACE, FACE_OUT);
}
}

@ -4034,14 +4034,23 @@ static int edbm_bridge_edge_loops_exec(bContext *C, wmOperator *op)
mesh_operator_edgering_props_get(op, &op_props);
if (op_props.cuts) {
BMOperator bmop_subd;
/* we only need face normals updated */
EDBM_mesh_normals_update(em);
BMO_op_callf(em->bm, BMO_FLAG_DEFAULTS,
"subdivide_edgering edges=%S interp_mode=%i cuts=%i smooth=%f "
"profile_shape=%i profile_shape_factor=%f",
&bmop, "edges.out", op_props.interp_mode, op_props.cuts, op_props.smooth,
op_props.profile_shape, op_props.profile_shape_factor);
BMO_op_initf(
em->bm, &bmop_subd, op->flag,
"subdivide_edgering edges=%S interp_mode=%i cuts=%i smooth=%f "
"profile_shape=%i profile_shape_factor=%f",
&bmop, "edges.out", op_props.interp_mode, op_props.cuts, op_props.smooth,
op_props.profile_shape, op_props.profile_shape_factor
);
BMO_op_exec(em->bm, &bmop_subd);
BMO_slot_buffer_hflag_enable(em->bm, bmop_subd.slots_out, "faces.out", BM_FACE, BM_ELEM_SELECT, true);
BMO_op_finish(em->bm, &bmop_subd);
}
}
}