Cleanup: uvedit_*_select, replace `BMEditMesh*` with `BMesh*`

Change `cd_loop_uv_offset` from signed to unsigned, forcing
a crash if passed invalid input.

Differential Revision: https://developer.blender.org/D15722
This commit is contained in:
Chris Blackbourn 2022-08-19 12:56:13 +12:00
parent f5aac6662d
commit aa82f91c92
6 changed files with 94 additions and 100 deletions

View File

@ -107,64 +107,64 @@ bool uvedit_uv_select_test(const struct Scene *scene, struct BMLoop *l, int cd_l
* Changes selection state of a single UV Face.
*/
void uvedit_face_select_set(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *em,
struct BMFace *efa,
bool select,
bool do_history,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
/**
* \brief Select UV Edge
*
* Changes selection state of a single UV Edge.
*/
void uvedit_edge_select_set(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *em,
struct BMLoop *l,
bool select,
bool do_history,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
/**
* \brief Select UV Vertex
*
* Changes selection state of a single UV vertex.
*/
void uvedit_uv_select_set(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *em,
struct BMLoop *l,
bool select,
bool do_history,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
/* Low level functions for (de)selecting individual UV elements. Ensure UV face visibility before
* use. */
void uvedit_face_select_enable(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *bm,
struct BMFace *efa,
bool do_history,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
void uvedit_face_select_disable(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *bm,
struct BMFace *efa,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
void uvedit_edge_select_enable(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *bm,
struct BMLoop *l,
bool do_history,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
void uvedit_edge_select_disable(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *bm,
struct BMLoop *l,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
void uvedit_uv_select_enable(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *bm,
struct BMLoop *l,
bool do_history,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
void uvedit_uv_select_disable(const struct Scene *scene,
struct BMEditMesh *em,
struct BMesh *bm,
struct BMLoop *l,
int cd_loop_uv_offset);
uint cd_loop_uv_offset);
/* Sticky mode UV element selection functions. */

View File

@ -1497,7 +1497,7 @@ static int uv_hide_exec(bContext *C, wmOperator *op)
if (bm_face_is_all_uv_sel(efa, !swap, cd_loop_uv_offset)) {
BM_face_select_set(em->bm, efa, false);
}
uvedit_face_select_disable(scene, em, efa, cd_loop_uv_offset);
uvedit_face_select_disable(scene, em->bm, efa, cd_loop_uv_offset);
}
else {
if (bm_face_is_all_uv_sel(efa, true, cd_loop_uv_offset) == !swap) {
@ -1514,7 +1514,7 @@ static int uv_hide_exec(bContext *C, wmOperator *op)
}
}
if (!swap) {
uvedit_face_select_disable(scene, em, efa, cd_loop_uv_offset);
uvedit_face_select_disable(scene, em->bm, efa, cd_loop_uv_offset);
}
}
}
@ -1536,7 +1536,7 @@ static int uv_hide_exec(bContext *C, wmOperator *op)
break;
}
}
uvedit_face_select_disable(scene, em, efa, cd_loop_uv_offset);
uvedit_face_select_disable(scene, em->bm, efa, cd_loop_uv_offset);
}
else {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@ -1560,7 +1560,7 @@ static int uv_hide_exec(bContext *C, wmOperator *op)
}
}
if (!swap) {
uvedit_face_select_disable(scene, em, efa, cd_loop_uv_offset);
uvedit_face_select_disable(scene, em->bm, efa, cd_loop_uv_offset);
}
}
}

View File

@ -150,7 +150,7 @@ static void verttag_set_cb(BMLoop *l, bool val, void *user_data_v)
if (verttag_filter_cb(l_iter, user_data)) {
MLoopUV *luv_iter = BM_ELEM_CD_GET_VOID_P(l_iter, cd_loop_uv_offset);
if (equals_v2v2(luv->uv, luv_iter->uv)) {
uvedit_uv_select_set(scene, em, l_iter, val, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l_iter, val, false, cd_loop_uv_offset);
}
}
}

View File

@ -848,7 +848,7 @@ static bool uv_rip_object(Scene *scene, Object *obedit, const float co[2], const
BMLoop *l_iter = BLI_gsetIterator_getKey(&gs_iter);
ULData *ul = UL(l_iter);
if (ul->side == side_from_cursor) {
uvedit_uv_select_disable(scene, em, l_iter, cd_loop_uv_offset);
uvedit_uv_select_disable(scene, em->bm, l_iter, cd_loop_uv_offset);
changed = true;
}
/* Ensure we don't operate on these again. */
@ -866,7 +866,7 @@ static bool uv_rip_object(Scene *scene, Object *obedit, const float co[2], const
BMLoop *l_iter = BLI_gsetIterator_getKey(&gs_iter);
ULData *ul = UL(l_iter);
if (ul->side == side_from_cursor) {
uvedit_uv_select_disable(scene, em, l_iter, cd_loop_uv_offset);
uvedit_uv_select_disable(scene, em->bm, l_iter, cd_loop_uv_offset);
changed = true;
}
/* Ensure we don't operate on these again. */

View File

@ -207,7 +207,7 @@ static void uvedit_vertex_select_tagged(BMEditMesh *em,
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
if (BM_elem_flag_test(l->v, BM_ELEM_TAG)) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
}
}
}
@ -265,7 +265,7 @@ void uvedit_face_select_set_with_sticky(const Scene *scene,
const ToolSettings *ts = scene->toolsettings;
const char sticky = ts->uv_sticky;
if (ts->uv_flag & UV_SYNC_SELECTION) {
uvedit_face_select_set(scene, em, efa, select, do_history, cd_loop_uv_offset);
uvedit_face_select_set(scene, em->bm, efa, select, do_history, cd_loop_uv_offset);
return;
}
if (!uvedit_face_visible_test(scene, efa)) {
@ -275,7 +275,7 @@ void uvedit_face_select_set_with_sticky(const Scene *scene,
* (not part of any face selections). This now uses the sticky location mode logic instead. */
switch (sticky) {
case SI_STICKY_DISABLE: {
uvedit_face_select_set(scene, em, efa, select, do_history, cd_loop_uv_offset);
uvedit_face_select_set(scene, em->bm, efa, select, do_history, cd_loop_uv_offset);
break;
}
default: {
@ -313,32 +313,32 @@ void uvedit_face_select_shared_vert(const Scene *scene,
}
void uvedit_face_select_set(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMFace *efa,
const bool select,
const bool do_history,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
if (select) {
uvedit_face_select_enable(scene, em, efa, do_history, cd_loop_uv_offset);
uvedit_face_select_enable(scene, bm, efa, do_history, cd_loop_uv_offset);
}
else {
uvedit_face_select_disable(scene, em, efa, cd_loop_uv_offset);
uvedit_face_select_disable(scene, bm, efa, cd_loop_uv_offset);
}
}
void uvedit_face_select_enable(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMFace *efa,
const bool do_history,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
BM_face_select_set(em->bm, efa, true);
BM_face_select_set(bm, efa, true);
if (do_history) {
BM_select_history_store(em->bm, (BMElem *)efa);
BM_select_history_store(bm, (BMElem *)efa);
}
}
else {
@ -354,14 +354,14 @@ void uvedit_face_select_enable(const Scene *scene,
}
void uvedit_face_select_disable(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMFace *efa,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
BM_face_select_set(em->bm, efa, false);
BM_face_select_set(bm, efa, false);
}
else {
BMLoop *l;
@ -411,7 +411,7 @@ void uvedit_edge_select_set_with_sticky(const Scene *scene,
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
uvedit_edge_select_set(scene, em, l, select, do_history, cd_loop_uv_offset);
uvedit_edge_select_set(scene, em->bm, l, select, do_history, cd_loop_uv_offset);
return;
}
@ -419,7 +419,7 @@ void uvedit_edge_select_set_with_sticky(const Scene *scene,
switch (sticky) {
case SI_STICKY_DISABLE: {
if (uvedit_face_visible_test(scene, l->f)) {
uvedit_edge_select_set(scene, em, l, select, do_history, cd_loop_uv_offset);
uvedit_edge_select_set(scene, em->bm, l, select, do_history, cd_loop_uv_offset);
}
break;
}
@ -501,44 +501,41 @@ void uvedit_edge_select_set_noflush(const Scene *scene,
}
void uvedit_edge_select_set(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMLoop *l,
const bool select,
const bool do_history,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
if (select) {
uvedit_edge_select_enable(scene, em, l, do_history, cd_loop_uv_offset);
uvedit_edge_select_enable(scene, bm, l, do_history, cd_loop_uv_offset);
}
else {
uvedit_edge_select_disable(scene, em, l, cd_loop_uv_offset);
uvedit_edge_select_disable(scene, bm, l, cd_loop_uv_offset);
}
}
void uvedit_edge_select_enable(const Scene *scene,
BMEditMesh *em,
BMLoop *l,
const bool do_history,
const int cd_loop_uv_offset)
void uvedit_edge_select_enable(
const Scene *scene, BMesh *bm, BMLoop *l, const bool do_history, const uint cd_loop_uv_offset)
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
if (ts->selectmode & SCE_SELECT_FACE) {
BM_face_select_set(em->bm, l->f, true);
BM_face_select_set(bm, l->f, true);
}
else if (ts->selectmode & SCE_SELECT_EDGE) {
BM_edge_select_set(em->bm, l->e, true);
BM_edge_select_set(bm, l->e, true);
}
else {
BM_vert_select_set(em->bm, l->e->v1, true);
BM_vert_select_set(em->bm, l->e->v2, true);
BM_vert_select_set(bm, l->e->v1, true);
BM_vert_select_set(bm, l->e->v2, true);
}
if (do_history) {
BM_select_history_store(em->bm, (BMElem *)l->e);
BM_select_history_store(bm, (BMElem *)l->e);
}
}
else {
@ -552,23 +549,23 @@ void uvedit_edge_select_enable(const Scene *scene,
}
void uvedit_edge_select_disable(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMLoop *l,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
if (ts->selectmode & SCE_SELECT_FACE) {
BM_face_select_set(em->bm, l->f, false);
BM_face_select_set(bm, l->f, false);
}
else if (ts->selectmode & SCE_SELECT_EDGE) {
BM_edge_select_set(em->bm, l->e, false);
BM_edge_select_set(bm, l->e, false);
}
else {
BM_vert_select_set(em->bm, l->e->v1, false);
BM_vert_select_set(em->bm, l->e->v2, false);
BM_vert_select_set(bm, l->e->v1, false);
BM_vert_select_set(bm, l->e->v2, false);
}
}
else {
@ -633,7 +630,7 @@ void uvedit_uv_select_set_with_sticky(const Scene *scene,
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
uvedit_uv_select_set(scene, em, l, select, do_history, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, do_history, cd_loop_uv_offset);
return;
}
@ -641,7 +638,7 @@ void uvedit_uv_select_set_with_sticky(const Scene *scene,
switch (sticky) {
case SI_STICKY_DISABLE: {
if (uvedit_face_visible_test(scene, l->f)) {
uvedit_uv_select_set(scene, em, l, select, do_history, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, do_history, cd_loop_uv_offset);
}
break;
}
@ -695,7 +692,8 @@ void uvedit_uv_select_shared_vert(const Scene *scene,
}
if (do_select) {
uvedit_uv_select_set(scene, em, l_radial_iter, select, do_history, cd_loop_uv_offset);
uvedit_uv_select_set(
scene, em->bm, l_radial_iter, select, do_history, cd_loop_uv_offset);
}
}
}
@ -704,25 +702,22 @@ void uvedit_uv_select_shared_vert(const Scene *scene,
}
void uvedit_uv_select_set(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMLoop *l,
const bool select,
const bool do_history,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
if (select) {
uvedit_uv_select_enable(scene, em, l, do_history, cd_loop_uv_offset);
uvedit_uv_select_enable(scene, bm, l, do_history, cd_loop_uv_offset);
}
else {
uvedit_uv_select_disable(scene, em, l, cd_loop_uv_offset);
uvedit_uv_select_disable(scene, bm, l, cd_loop_uv_offset);
}
}
void uvedit_uv_select_enable(const Scene *scene,
BMEditMesh *em,
BMLoop *l,
const bool do_history,
const int cd_loop_uv_offset)
void uvedit_uv_select_enable(
const Scene *scene, BMesh *bm, BMLoop *l, const bool do_history, const uint cd_loop_uv_offset)
{
const ToolSettings *ts = scene->toolsettings;
@ -732,14 +727,14 @@ void uvedit_uv_select_enable(const Scene *scene,
if (ts->uv_flag & UV_SYNC_SELECTION) {
if (ts->selectmode & SCE_SELECT_FACE) {
BM_face_select_set(em->bm, l->f, true);
BM_face_select_set(bm, l->f, true);
}
else {
BM_vert_select_set(em->bm, l->v, true);
BM_vert_select_set(bm, l->v, true);
}
if (do_history) {
BM_select_history_store(em->bm, (BMElem *)l->v);
BM_select_history_store(bm, (BMElem *)l->v);
}
}
else {
@ -749,18 +744,18 @@ void uvedit_uv_select_enable(const Scene *scene,
}
void uvedit_uv_select_disable(const Scene *scene,
BMEditMesh *em,
BMesh *bm,
BMLoop *l,
const int cd_loop_uv_offset)
const uint cd_loop_uv_offset)
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
if (ts->selectmode & SCE_SELECT_FACE) {
BM_face_select_set(em->bm, l->f, false);
BM_face_select_set(bm, l->f, false);
}
else {
BM_vert_select_set(em->bm, l->v, false);
BM_vert_select_set(bm, l->v, false);
}
}
else {
@ -1975,7 +1970,7 @@ static void uv_select_linked_multi(Scene *scene,
BM_face_select_set(em->bm, efa, value); \
} \
else { \
uvedit_face_select_set(scene, em, efa, value, false, cd_loop_uv_offset); \
uvedit_face_select_set(scene, em->bm, efa, value, false, cd_loop_uv_offset); \
} \
(void)0
@ -3247,7 +3242,7 @@ static void uv_select_flush_from_tag_sticky_loc_internal(const Scene *scene,
UvMapVert *start_vlist = NULL, *vlist_iter;
BMFace *efa_vlist;
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
vlist_iter = BM_uv_vert_map_at_index(vmap, BM_elem_index_get(l->v));
@ -3265,7 +3260,6 @@ static void uv_select_flush_from_tag_sticky_loc_internal(const Scene *scene,
vlist_iter = start_vlist;
while (vlist_iter) {
if (vlist_iter != start_vlist && vlist_iter->separate) {
break;
}
@ -3278,7 +3272,7 @@ static void uv_select_flush_from_tag_sticky_loc_internal(const Scene *scene,
l_other = BM_iter_at_index(
em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->loop_of_poly_index);
uvedit_uv_select_set(scene, em, l_other, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l_other, select, false, cd_loop_uv_offset);
}
vlist_iter = vlist_iter->next;
}
@ -3345,7 +3339,7 @@ static void uv_select_flush_from_tag_face(const Scene *scene, Object *obedit, co
else { /* SI_STICKY_DISABLE or ts->uv_flag & UV_SYNC_SELECTION */
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
if (BM_elem_flag_test(efa, BM_ELEM_TAG)) {
uvedit_face_select_set(scene, em, efa, select, false, cd_loop_uv_offset);
uvedit_face_select_set(scene, em->bm, efa, select, false, cd_loop_uv_offset);
}
}
}
@ -3394,7 +3388,7 @@ static void uv_select_flush_from_tag_loop(const Scene *scene, Object *obedit, co
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
if (BM_elem_flag_test(l->v, BM_ELEM_TAG)) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
}
}
}
@ -3423,7 +3417,7 @@ static void uv_select_flush_from_tag_loop(const Scene *scene, Object *obedit, co
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
if (BM_elem_flag_test(l, BM_ELEM_TAG)) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
}
}
}
@ -3644,14 +3638,14 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
if (!pinned || (ts->uv_flag & UV_SYNC_SELECTION)) {
/* UV_SYNC_SELECTION - can't do pinned selection */
if (BLI_rctf_isect_pt_v(&rectf, luv->uv)) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
BM_elem_flag_enable(l->v, BM_ELEM_TAG);
has_selected = true;
}
}
else if (pinned) {
if ((luv->flag & MLOOPUV_PINNED) && BLI_rctf_isect_pt_v(&rectf, luv->uv)) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
BM_elem_flag_enable(l->v, BM_ELEM_TAG);
}
}
@ -3864,7 +3858,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op)
luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
if (uv_circle_select_is_point_inside(luv->uv, offset, ellipse)) {
changed = true;
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
BM_elem_flag_enable(l->v, BM_ELEM_TAG);
has_selected = true;
}
@ -4094,7 +4088,7 @@ static bool do_lasso_select_mesh_uv(bContext *C,
MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
if (do_lasso_select_mesh_uv_is_point_inside(
region, &rect, mcoords, mcoords_len, luv->uv)) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
changed = true;
BM_elem_flag_enable(l->v, BM_ELEM_TAG);
has_selected = true;
@ -4214,7 +4208,7 @@ static int uv_select_pinned_exec(bContext *C, wmOperator *op)
luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
if (luv->flag & MLOOPUV_PINNED) {
uvedit_uv_select_enable(scene, em, l, false, cd_loop_uv_offset);
uvedit_uv_select_enable(scene, em->bm, l, false, cd_loop_uv_offset);
changed = true;
}
}
@ -4467,8 +4461,8 @@ static int uv_select_overlap(bContext *C, const bool extend)
/* Main tri-tri overlap test. */
const float endpoint_bias = -1e-4f;
if (overlap_tri_tri_uv_test(o_a->tri, o_b->tri, endpoint_bias)) {
uvedit_face_select_enable(scene, em_a, face_a, false, cd_loop_uv_offset_a);
uvedit_face_select_enable(scene, em_b, face_b, false, cd_loop_uv_offset_b);
uvedit_face_select_enable(scene, em_a->bm, face_a, false, cd_loop_uv_offset_a);
uvedit_face_select_enable(scene, em_b->bm, face_b, false, cd_loop_uv_offset_b);
}
}
@ -4764,7 +4758,7 @@ static int uv_select_similar_vert_exec(bContext *C, wmOperator *op)
const float needle = get_uv_vert_needle(type, l->v, ob_m3, luv, cd_loop_uv_offset);
bool select = ED_select_similar_compare_float_tree(tree_1d, needle, threshold, compare);
if (select) {
uvedit_uv_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
changed = true;
}
}
@ -4883,7 +4877,7 @@ static int uv_select_similar_edge_exec(bContext *C, wmOperator *op)
float needle = get_uv_edge_needle(type, l->e, ob_m3, luv_a, luv_b, cd_loop_uv_offset);
bool select = ED_select_similar_compare_float_tree(tree_1d, needle, threshold, compare);
if (select) {
uvedit_edge_select_set(scene, em, l, select, false, cd_loop_uv_offset);
uvedit_edge_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
changed = true;
}
}
@ -4983,7 +4977,7 @@ static int uv_select_similar_face_exec(bContext *C, wmOperator *op)
bool select = ED_select_similar_compare_float_tree(tree_1d, needle, threshold, compare);
if (select) {
uvedit_face_select_set(scene, em, face, select, do_history, cd_loop_uv_offset);
uvedit_face_select_set(scene, em->bm, face, select, do_history, cd_loop_uv_offset);
changed = true;
}
}
@ -5103,7 +5097,7 @@ static int uv_select_similar_island_exec(bContext *C, wmOperator *op)
bool do_history = false;
for (int j = 0; j < island->faces_len; j++) {
uvedit_face_select_set(
scene, em, island->faces[j], select, do_history, island->cd_loop_uv_offset);
scene, em->bm, island->faces[j], select, do_history, island->cd_loop_uv_offset);
}
changed = true;
}
@ -5487,7 +5481,7 @@ void ED_uvedit_selectmode_clean(const Scene *scene, Object *obedit)
if (uvedit_face_select_test(scene, efa, cd_loop_uv_offset)) {
BM_elem_flag_enable(efa, BM_ELEM_TAG);
}
uvedit_face_select_set(scene, em, efa, false, false, cd_loop_uv_offset);
uvedit_face_select_set(scene, em->bm, efa, false, false, cd_loop_uv_offset);
}
}
uv_select_flush_from_tag_face(scene, obedit, true);

View File

@ -916,7 +916,7 @@ static void stitch_propagate_uv_final_position(Scene *scene,
if (final) {
copy_v2_v2(luv->uv, final_position[index].uv);
uvedit_uv_select_enable(scene, state->em, l, false, cd_loop_uv_offset);
uvedit_uv_select_enable(scene, state->em->bm, l, false, cd_loop_uv_offset);
}
else {
int face_preview_pos =