BMesh: calc_manipulator_stats can only check verts
Code assumed selection wasn't correctly flushed, which we ensure now.
This commit is contained in:
@@ -268,7 +268,6 @@ static int calc_manipulator_stats(const bContext *C)
|
|||||||
ARegion *ar = CTX_wm_region(C);
|
ARegion *ar = CTX_wm_region(C);
|
||||||
Scene *scene = CTX_data_scene(C);
|
Scene *scene = CTX_data_scene(C);
|
||||||
Object *obedit = CTX_data_edit_object(C);
|
Object *obedit = CTX_data_edit_object(C);
|
||||||
ToolSettings *ts = CTX_data_tool_settings(C);
|
|
||||||
View3D *v3d = sa->spacedata.first;
|
View3D *v3d = sa->spacedata.first;
|
||||||
RegionView3D *rv3d = ar->regiondata;
|
RegionView3D *rv3d = ar->regiondata;
|
||||||
Base *base;
|
Base *base;
|
||||||
@@ -305,10 +304,6 @@ static int calc_manipulator_stats(const bContext *C)
|
|||||||
|
|
||||||
BMIter iter;
|
BMIter iter;
|
||||||
|
|
||||||
/* do vertices/edges/faces for center depending on selection
|
|
||||||
* mode. note we can't use just vertex selection flag because
|
|
||||||
* it is not flush down on changes */
|
|
||||||
if (ts->selectmode & SCE_SELECT_VERTEX) {
|
|
||||||
BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
|
BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
|
||||||
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
|
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
|
||||||
if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) {
|
if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) {
|
||||||
@@ -318,39 +313,6 @@ static int calc_manipulator_stats(const bContext *C)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ts->selectmode & SCE_SELECT_EDGE) {
|
|
||||||
BMIter itersub;
|
|
||||||
BMEdge *eed;
|
|
||||||
BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
|
|
||||||
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
|
|
||||||
/* check the vertex has a selected edge, only add it once */
|
|
||||||
BM_ITER_ELEM (eed, &itersub, eve, BM_EDGES_OF_VERT) {
|
|
||||||
if (BM_elem_flag_test(eed, BM_ELEM_SELECT)) {
|
|
||||||
totsel++;
|
|
||||||
calc_tw_center(scene, eve->co);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
BMIter itersub;
|
|
||||||
BMFace *efa;
|
|
||||||
BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
|
|
||||||
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
|
|
||||||
/* check the vertex has a selected face, only add it once */
|
|
||||||
BM_ITER_ELEM (efa, &itersub, eve, BM_FACES_OF_VERT) {
|
|
||||||
if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) {
|
|
||||||
totsel++;
|
|
||||||
calc_tw_center(scene, eve->co);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} /* end editmesh */
|
} /* end editmesh */
|
||||||
else if (obedit->type == OB_ARMATURE) {
|
else if (obedit->type == OB_ARMATURE) {
|
||||||
bArmature *arm = obedit->data;
|
bArmature *arm = obedit->data;
|
||||||
|
|||||||
Reference in New Issue
Block a user