Bugfix for [#17363] Edge selection mode + knife twice = latter cut doesn't do anything
This commit is contained in:
@@ -745,9 +745,9 @@ void KnifeSubdivide(char mode)
|
|||||||
eed= eed->next;
|
eed= eed->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode==KNIFE_EXACT) esubdivideflag(1, 0, B_KNIFE|B_PERCENTSUBD,1,SUBDIV_SELECT_ORIG);
|
if(mode==KNIFE_EXACT) esubdivideflag(SELECT, 0, B_KNIFE|B_PERCENTSUBD,1,SUBDIV_SELECT_ORIG);
|
||||||
else if (mode==KNIFE_MIDPOINT) esubdivideflag(1, 0, B_KNIFE,1,SUBDIV_SELECT_ORIG);
|
else if (mode==KNIFE_MIDPOINT) esubdivideflag(SELECT, 0, B_KNIFE,1,SUBDIV_SELECT_ORIG);
|
||||||
else if (mode==KNIFE_MULTICUT) esubdivideflag(1, 0, B_KNIFE,numcuts,SUBDIV_SELECT_ORIG);
|
else if (mode==KNIFE_MULTICUT) esubdivideflag(SELECT, 0, B_KNIFE,numcuts,SUBDIV_SELECT_ORIG);
|
||||||
|
|
||||||
eed=em->edges.first;
|
eed=em->edges.first;
|
||||||
while(eed){
|
while(eed){
|
||||||
|
|||||||
@@ -2698,14 +2698,19 @@ void esubdivideflag(int flag, float rad, int beauty, int numcuts, int seltype)
|
|||||||
free_tagged_edges_faces(em->edges.first, em->faces.first);
|
free_tagged_edges_faces(em->edges.first, em->faces.first);
|
||||||
|
|
||||||
if(seltype == SUBDIV_SELECT_ORIG && G.qual != LR_CTRLKEY) {
|
if(seltype == SUBDIV_SELECT_ORIG && G.qual != LR_CTRLKEY) {
|
||||||
|
/* bugfix: vertex could get flagged as "not-selected"
|
||||||
|
// solution: clear flags before, not at the same time as setting SELECT flag -dg
|
||||||
|
*/
|
||||||
|
for(eed = em->edges.first;eed;eed = eed->next) {
|
||||||
|
if(!(eed->f2 & EDGENEW || eed->f2 & EDGEOLD)) {
|
||||||
|
eed->f &= !flag;
|
||||||
|
EM_select_edge(eed,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
for(eed = em->edges.first;eed;eed = eed->next) {
|
for(eed = em->edges.first;eed;eed = eed->next) {
|
||||||
if(eed->f2 & EDGENEW || eed->f2 & EDGEOLD) {
|
if(eed->f2 & EDGENEW || eed->f2 & EDGEOLD) {
|
||||||
eed->f |= flag;
|
eed->f |= flag;
|
||||||
EM_select_edge(eed,1);
|
EM_select_edge(eed,1);
|
||||||
|
|
||||||
}else{
|
|
||||||
eed->f &= !flag;
|
|
||||||
EM_select_edge(eed,0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((seltype == SUBDIV_SELECT_INNER || seltype == SUBDIV_SELECT_INNER_SEL)|| G.qual == LR_CTRLKEY) {
|
} else if ((seltype == SUBDIV_SELECT_INNER || seltype == SUBDIV_SELECT_INNER_SEL)|| G.qual == LR_CTRLKEY) {
|
||||||
|
|||||||
Reference in New Issue
Block a user