Fix #119980: BMesh copying functions can clear selection
A subtle mistake in 66da875488 meant that existing selection
was overwritten instead of maintained in the BMesh utility functions for
copying element custom data and flags.
This commit is contained in:
@@ -348,20 +348,20 @@ void BM_elem_attrs_copy(BMesh *bm, const BMVert *src, BMVert *dst)
|
||||
{
|
||||
BLI_assert(src != dst);
|
||||
CustomData_bmesh_copy_block(bm->vdata, src->head.data, &dst->head.data);
|
||||
dst->head.hflag = src->head.hflag & ~BM_ELEM_SELECT;
|
||||
dst->head.hflag = (dst->head.hflag & BM_ELEM_SELECT) | (src->head.hflag & ~BM_ELEM_SELECT);
|
||||
copy_v3_v3(dst->no, src->no);
|
||||
}
|
||||
void BM_elem_attrs_copy(BMesh *bm, const BMEdge *src, BMEdge *dst)
|
||||
{
|
||||
BLI_assert(src != dst);
|
||||
CustomData_bmesh_copy_block(bm->edata, src->head.data, &dst->head.data);
|
||||
dst->head.hflag = src->head.hflag & ~BM_ELEM_SELECT;
|
||||
dst->head.hflag = (dst->head.hflag & BM_ELEM_SELECT) | (src->head.hflag & ~BM_ELEM_SELECT);
|
||||
}
|
||||
void BM_elem_attrs_copy(BMesh *bm, const BMFace *src, BMFace *dst)
|
||||
{
|
||||
BLI_assert(src != dst);
|
||||
CustomData_bmesh_copy_block(bm->pdata, src->head.data, &dst->head.data);
|
||||
dst->head.hflag = src->head.hflag & ~BM_ELEM_SELECT;
|
||||
dst->head.hflag = (dst->head.hflag & BM_ELEM_SELECT) | (src->head.hflag & ~BM_ELEM_SELECT);
|
||||
copy_v3_v3(dst->no, src->no);
|
||||
dst->mat_nr = src->mat_nr;
|
||||
}
|
||||
@@ -369,7 +369,7 @@ void BM_elem_attrs_copy(BMesh *bm, const BMLoop *src, BMLoop *dst)
|
||||
{
|
||||
BLI_assert(src != dst);
|
||||
CustomData_bmesh_copy_block(bm->ldata, src->head.data, &dst->head.data);
|
||||
dst->head.hflag = src->head.hflag & ~BM_ELEM_SELECT;
|
||||
dst->head.hflag = (dst->head.hflag & BM_ELEM_SELECT) | (src->head.hflag & ~BM_ELEM_SELECT);
|
||||
}
|
||||
|
||||
void BM_elem_select_copy(BMesh *bm_dst, void *ele_dst_v, const void *ele_src_v)
|
||||
|
||||
Reference in New Issue
Block a user