diff options
author | Ton Roosendaal <ton@blender.org> | 2004-10-29 18:30:20 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-10-29 18:30:20 +0400 |
commit | f33f2abe39cb0a6f99c9e7e59858d5d95f7735d5 (patch) | |
tree | 07f3c705934fafc751cce199637803a9afb048f0 /source | |
parent | bd9ac7d6ec4a564ebdf57868068aa53aba9e2d0b (diff) |
Two more wavk bugs (help he's pestering me!)
- 1702; edge selection should be evaluated properly before adding face
- 1704; crash in separate, two causes here:
- separate didnt make selection flags consistant (needed badly
there because of evil code)
- after adding quad (Fkey) the face was not selected, but its
vertices were... that can give bad bad crashes
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/src/drawobject.c | 2 | ||||
-rw-r--r-- | source/blender/src/editmesh.c | 2 | ||||
-rw-r--r-- | source/blender/src/editmesh_add.c | 12 |
3 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index f80f3d37739..aab5be58009 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -3867,7 +3867,7 @@ static void drawSolidSelect(Object *ob, ListBase *lb) } drawmeshwire(ob); - + if(dlm && flag) dlm->flag |= flag; } else drawDispListwire(lb); diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index baf086c6159..21777dc7821 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -1311,6 +1311,8 @@ void separate_mesh(void) return; } + EM_selectmode_set(); // enforce full consistant selection flags + /* we are going to abuse the system as follows: * 1. add a duplicate object: this will be the new one, we remember old pointer * 2: then do a split if needed. diff --git a/source/blender/src/editmesh_add.c b/source/blender/src/editmesh_add.c index 1f0495f3711..f65ed98355e 100644 --- a/source/blender/src/editmesh_add.c +++ b/source/blender/src/editmesh_add.c @@ -300,14 +300,18 @@ void addedgeface_mesh(void) if( (G.vd->lay & G.obedit->lay)==0 ) return; /* how many selected ? */ - eve= em->verts.first; - while(eve) { + if(G.scene->selectmode & SCE_SELECT_EDGE) { + /* in edge mode finding selected vertices means flushing down edge codes... */ + /* can't make face with only edge selection info... */ + EM_selectmode_set(); + } + + for(eve= em->verts.first; eve; eve= eve->next) { if(eve->f & SELECT) { amount++; if(amount>4) break; neweve[amount-1]= eve; } - eve= eve->next; } if(amount==2) { eed= addedgelist(neweve[0], neweve[1], NULL); @@ -357,6 +361,8 @@ void addedgeface_mesh(void) efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL, NULL); else efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL); + + EM_select_face(efa, 1); } } |