[Bf-blender-cvs] [f9185c6] soc-2016-uv_tools: Proper Hiding: Make selection operators ignore hidden elements
Phil Gosch
noreply at git.blender.org
Tue Jun 14 15:54:00 CEST 2016
Commit: f9185c646f1f78e653f57ec80f4f2fd62ef31d4a
Author: Phil Gosch
Date: Tue Jun 14 15:53:16 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rBf9185c646f1f78e653f57ec80f4f2fd62ef31d4a
Proper Hiding: Make selection operators ignore hidden elements
===================================================================
M source/blender/editors/uvedit/uvedit_ops.c
===================================================================
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index e510782..af48a73 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -407,7 +407,9 @@ bool uvedit_face_select_enable(Scene *scene, BMEditMesh *em, BMFace *efa, const
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
- luv->flag |= MLOOPUV_VERTSEL;
+ if (!(luv->flag & MLOOPUV_HIDDEN)) {
+ luv->flag |= MLOOPUV_VERTSEL;
+ }
}
return true;
@@ -505,8 +507,12 @@ void uvedit_edge_select_enable(BMEditMesh *em, Scene *scene, BMLoop *l, const bo
luv1 = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
luv2 = BM_ELEM_CD_GET_VOID_P(l->next, cd_loop_uv_offset);
- luv1->flag |= MLOOPUV_VERTSEL;
- luv2->flag |= MLOOPUV_VERTSEL;
+ if (!(luv1->flag & MLOOPUV_HIDDEN)) {
+ luv1->flag |= MLOOPUV_VERTSEL;
+ }
+ if (!(luv2->flag & MLOOPUV_HIDDEN)) {
+ luv2->flag |= MLOOPUV_VERTSEL;
+ }
}
}
@@ -582,7 +588,9 @@ void uvedit_uv_select_enable(BMEditMesh *em, Scene *scene, BMLoop *l,
}
else {
MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
- luv->flag |= MLOOPUV_VERTSEL;
+ if (!(luv->flag & MLOOPUV_HIDDEN)) {
+ luv->flag |= MLOOPUV_VERTSEL;
+ }
}
}
@@ -2243,13 +2251,19 @@ static void uv_select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int
switch (action) {
case SEL_SELECT:
- luv->flag |= MLOOPUV_VERTSEL;
+ if (!(luv->flag & MLOOPUV_HIDDEN)) { /* Skip hidden loops */
+ luv->flag |= MLOOPUV_VERTSEL;
+ }
break;
case SEL_DESELECT:
- luv->flag &= ~MLOOPUV_VERTSEL;
+ if (!(luv->flag & MLOOPUV_HIDDEN)) {
+ luv->flag &= ~MLOOPUV_VERTSEL;
+ }
break;
case SEL_INVERT:
- luv->flag ^= MLOOPUV_VERTSEL;
+ if (!(luv->flag & MLOOPUV_HIDDEN)) {
+ luv->flag ^= MLOOPUV_VERTSEL;
+ }
break;
}
}
@@ -3942,6 +3956,7 @@ static int uv_hide_exec(bContext *C, wmOperator *op)
luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
if ((luv->flag & MLOOPUV_VERTSEL && !swap) || (!(luv->flag & MLOOPUV_VERTSEL) && swap)) {
luv->flag |= MLOOPUV_HIDDEN;
+ luv->flag &= ~MLOOPUV_VERTSEL; /* Deselect after hiding to avoid unwanted behaviour */
}
}
}
@@ -3967,7 +3982,7 @@ static void UV_OT_hide(wmOperatorType *ot)
ot->poll = ED_operator_uvedit;
/* props */
- RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected");
+ RNA_def_boolean(ot->srna, "unselected", 0, "Hide Unselected", "Hide unselected rather than selected");
}
/****************** reveal operator ******************/
More information about the Bf-blender-cvs
mailing list