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
This commit is contained in:
@@ -3867,7 +3867,7 @@ static void drawSolidSelect(Object *ob, ListBase *lb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
drawmeshwire(ob);
|
drawmeshwire(ob);
|
||||||
|
|
||||||
if(dlm && flag) dlm->flag |= flag;
|
if(dlm && flag) dlm->flag |= flag;
|
||||||
}
|
}
|
||||||
else drawDispListwire(lb);
|
else drawDispListwire(lb);
|
||||||
|
|||||||
@@ -1311,6 +1311,8 @@ void separate_mesh(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EM_selectmode_set(); // enforce full consistant selection flags
|
||||||
|
|
||||||
/* we are going to abuse the system as follows:
|
/* we are going to abuse the system as follows:
|
||||||
* 1. add a duplicate object: this will be the new one, we remember old pointer
|
* 1. add a duplicate object: this will be the new one, we remember old pointer
|
||||||
* 2: then do a split if needed.
|
* 2: then do a split if needed.
|
||||||
|
|||||||
@@ -300,14 +300,18 @@ void addedgeface_mesh(void)
|
|||||||
if( (G.vd->lay & G.obedit->lay)==0 ) return;
|
if( (G.vd->lay & G.obedit->lay)==0 ) return;
|
||||||
|
|
||||||
/* how many selected ? */
|
/* how many selected ? */
|
||||||
eve= em->verts.first;
|
if(G.scene->selectmode & SCE_SELECT_EDGE) {
|
||||||
while(eve) {
|
/* 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) {
|
if(eve->f & SELECT) {
|
||||||
amount++;
|
amount++;
|
||||||
if(amount>4) break;
|
if(amount>4) break;
|
||||||
neweve[amount-1]= eve;
|
neweve[amount-1]= eve;
|
||||||
}
|
}
|
||||||
eve= eve->next;
|
|
||||||
}
|
}
|
||||||
if(amount==2) {
|
if(amount==2) {
|
||||||
eed= addedgelist(neweve[0], neweve[1], NULL);
|
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);
|
efa= addfacelist(neweve[0], neweve[2], neweve[3], neweve[1], NULL, NULL);
|
||||||
else
|
else
|
||||||
efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL);
|
efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL);
|
||||||
|
|
||||||
|
EM_select_face(efa, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user