[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39973] branches/bmesh/blender/source/ blender/bmesh/intern/bmesh_marking.c: Turned back on restricted deselect
Geoffrey Bantle
hairbat at yahoo.com
Tue Sep 6 18:17:28 CEST 2011
Revision: 39973
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39973
Author: briggs
Date: 2011-09-06 16:17:27 +0000 (Tue, 06 Sep 2011)
Log Message:
-----------
Turned back on restricted deselect
----------------------------------------------
Fixed restricted deselect for edge select. Not
sure if face deselect is working properly, will
follow up with any reports on the tracker.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c 2011-09-06 15:44:44 UTC (rev 39972)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c 2011-09-06 16:17:27 UTC (rev 39973)
@@ -26,7 +26,7 @@
* edges that line up to form a path, then try to
* deselect the middle edge
*/
-/*#define RESTRICTED_DESELECT*/
+#define RESTRICTED_DESELECT
/*
* BM_MARK.C
@@ -157,65 +157,50 @@
void BM_Select_Edge(BMesh *bm, BMEdge *e, int select)
{
-#if defined(RESTRICTED_DESELECT)
- int candesel;
- int testiso = 1;
- /*I might move this logic to editors/mesh/bmesh_select.c, where it'd be invoked
- by the selection tools. in that case, we'd still retain the checks
- for if an edge's verts can be deselected.*/
+ if(select){
+ if (!BM_TestHFlag(e, BM_SELECT)) bm->totedgesel += 1;
- /*ensure vert selections are valid, only if not in a multiselect
- mode that shares SCE_SELECT_VERT*/
- switch (bm->selectmode) {
- case SCE_SELECT_VERTEX:
- case SCE_SELECT_EDGE:
- case SCE_SELECT_FACE:
- case SCE_SELECT_EDGE|SCE_SELECT_FACE:
- testiso = 1;
- break;
- default:
- testiso = 0;
- break;
- }
+ BM_SetHFlag(&(e->head), BM_SELECT);
+ BM_Select(bm, e->v1, 1);
+ BM_Select(bm, e->v2, 1);
+ }else{
+ if (BM_TestHFlag(e, BM_SELECT)) bm->totedgesel -= 1;
+ BM_ClearHFlag(&(e->head), BM_SELECT);
- if (testiso && !select) {
- BMIter eiter;
- BMEdge *e2;
- int i;
+ if(
+ bm->selectmode == SCE_SELECT_EDGE ||
+ bm->selectmode == SCE_SELECT_FACE ||
+ bm->selectmode == (SCE_SELECT_EDGE | SCE_SELECT_FACE)){
- for (i=0; i<2; i++) {
- candesel = 1;
- e2 = BMIter_New(&eiter, bm, BM_EDGES_OF_VERT, !i?e->v1:e->v2);
- for (; e2; e2=BMIter_Step(&eiter)) {
- if (e2 == e) continue;
- if (BM_TestHFlag(e2, BM_SELECT)) {
- candesel = 0;
- break;
+ BMIter iter;
+ BMVert *verts[2] = {e->v1, e->v2};
+ BMEdge *e2;
+ int i;
+
+ for(i = 0; i < 2; i++){
+ int deselect = 1;
+
+ for(e2 = BMIter_New(&iter, bm, BM_EDGES_OF_VERT, verts[i]);
+ e2; e2 = BMIter_Step(&iter)){
+ if(e2 == e){
+ continue;
+ }
+
+ if (BM_TestHFlag(e2, BM_SELECT)){
+ deselect = 0;
+ break;
+ }
}
- }
- if (candesel) BM_Select_Vert(bm, !i?e->v1:e->v2, 0);
+ if(deselect) BM_Select_Vert(bm, verts[i], 0);
+ }
+ }else{
+ BM_Select(bm, e->v1, 0);
+ BM_Select(bm, e->v2, 0);
}
- }
-#endif
- if(select) {
- if (!BM_TestHFlag(e, BM_SELECT)) bm->totedgesel += 1;
-
- BM_SetHFlag(&(e->head), BM_SELECT);
- BM_Select(bm, e->v1, 1);
- BM_Select(bm, e->v2, 1);
}
- else{
- if (BM_TestHFlag(e, BM_SELECT)) bm->totedgesel -= 1;
-
- BM_ClearHFlag(&(e->head), BM_SELECT);
-#if !defined(RESTRICTED_DESELECT)
- BM_Select(bm, e->v1, 0);
- BM_Select(bm, e->v2, 0);
-#endif
- }
}
/*
@@ -251,7 +236,6 @@
/*flush down to edges*/
BM_ITER(l, &liter, bm, BM_LOOPS_OF_FACE, f) {
-#if defined(RESTRICTED_DESELECT)
BMIter fiter;
BMFace *f2;
BM_ITER(f2, &fiter, bm, BM_FACES_OF_EDGE, l->e) {
@@ -260,7 +244,6 @@
}
if (!f2)
-#endif
{
BM_Select(bm, l->e, 0);
}
@@ -268,7 +251,6 @@
/*flush down to verts*/
BM_ITER(l, &liter, bm, BM_LOOPS_OF_FACE, f) {
-#if defined(RESTRICTED_DESELECT)
BMIter eiter;
BMEdge *e;
BM_ITER(e, &eiter, bm, BM_EDGES_OF_VERT, l->v) {
@@ -277,7 +259,6 @@
}
if (!e)
-#endif
{
BM_Select(bm, l->v, 0);
}
More information about the Bf-blender-cvs
mailing list