diff options
Diffstat (limited to 'source/blender/editors/uvedit')
-rw-r--r-- | source/blender/editors/uvedit/uvedit_ops.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 33fcd67f6ed..18b43bcf460 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -3484,6 +3484,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op) const eSelectOp sel_op = RNA_enum_get(op->ptr, "mode"); const bool select = (sel_op != SEL_OP_SUB); + const bool use_pre_deselect = SEL_OP_USE_PRE_DESELECT(sel_op); pinned = RNA_boolean_get(op->ptr, "pinned"); @@ -3493,7 +3494,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op) Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( view_layer, ((View3D *)NULL), &objects_len); - if (SEL_OP_USE_PRE_DESELECT(sel_op)) { + if (use_pre_deselect) { uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT); } @@ -3511,8 +3512,6 @@ static int uv_box_select_exec(bContext *C, wmOperator *op) /* handle face selection mode */ float cent[2]; - changed = false; - BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { /* assume not touched */ BM_elem_flag_disable(efa, BM_ELEM_TAG); @@ -3565,7 +3564,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op) } } - if (changed) { + if (changed || use_pre_deselect) { changed_multi = true; uv_select_sync_flush(ts, em, select); @@ -3661,9 +3660,10 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op) const eSelectOp sel_op = ED_select_op_modal(RNA_enum_get(op->ptr, "mode"), WM_gesture_is_modal_first(op->customdata)); const bool select = (sel_op != SEL_OP_SUB); - if (SEL_OP_USE_PRE_DESELECT(sel_op)) { + const bool use_pre_deselect = SEL_OP_USE_PRE_DESELECT(sel_op); + + if (use_pre_deselect) { uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT); - changed_multi = true; } for (uint ob_index = 0; ob_index < objects_len; ob_index++) { @@ -3676,7 +3676,6 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op) /* do selection */ if (use_face_center) { - changed = false; BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { BM_elem_flag_disable(efa, BM_ELEM_TAG); /* assume not touched */ @@ -3714,7 +3713,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op) } } - if (changed) { + if (changed || use_pre_deselect) { changed_multi = true; uv_select_sync_flush(ts, em, select); @@ -3770,6 +3769,7 @@ static bool do_lasso_select_mesh_uv(bContext *C, (ts->selectmode == SCE_SELECT_FACE) : (ts->uv_selectmode == UV_SELECT_FACE)); const bool select = (sel_op != SEL_OP_SUB); + const bool use_pre_deselect = SEL_OP_USE_PRE_DESELECT(sel_op); BMIter iter, liter; @@ -3785,7 +3785,7 @@ static bool do_lasso_select_mesh_uv(bContext *C, Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( view_layer, ((View3D *)NULL), &objects_len); - if (SEL_OP_USE_PRE_DESELECT(sel_op)) { + if (use_pre_deselect) { uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT); } @@ -3850,7 +3850,7 @@ static bool do_lasso_select_mesh_uv(bContext *C, } } - if (changed) { + if (changed || use_pre_deselect) { changed_multi = true; uv_select_sync_flush(ts, em, select); |