Fix for bug #8713: edge loop delete did an undo push too much.

This commit is contained in:
Brecht Van Lommel 2008-03-26 16:46:04 +00:00
parent d94038342c
commit 972b0a5218
4 changed files with 24 additions and 7 deletions

@ -181,6 +181,8 @@ extern void select_mesh_group_menu(void);
extern void editmesh_mark_seam(int clear);
extern void loop_multiselect(int looptype);
extern void EM_select_more(void);
extern void EM_select_less(void);
/* ******************* editmesh_loop.c */

@ -3200,7 +3200,7 @@ void deselectall_mesh(void) /* this toggles!!!, UI level */
}
}
void select_more(void)
void EM_select_more(void)
{
EditMesh *em = G.editMesh;
EditVert *eve;
@ -3238,6 +3238,11 @@ void select_more(void)
EM_select_face(efa, 1);
}
}
}
void select_more(void)
{
EM_select_more();
countall();
addqueue(curarea->win, REDRAW, 0);
@ -3246,7 +3251,7 @@ void select_more(void)
BIF_undo_push("Select More");
}
void select_less(void)
void EM_select_less(void)
{
EditMesh *em = G.editMesh;
EditEdge *eed;
@ -3306,6 +3311,11 @@ void select_less(void)
EM_selectmode_flush();
}
}
void select_less(void)
{
EM_select_less();
countall();
BIF_undo_push("Select Less");

@ -994,9 +994,10 @@ void delete_mesh(void)
erase_vertices(&em->verts);
}
else if(event==6) {
if(!EdgeLoopDelete()) {
BIF_undo();
}
if(!EdgeLoopDelete())
return;
str= "Erase Edge Loop";
}
else if(event==4) {
str= "Erase Edges & Faces";
@ -4659,7 +4660,7 @@ int EdgeLoopDelete(void) {
if(!EdgeSlide(1, 1)) {
return 0;
}
select_more();
EM_select_more();
removedoublesflag(1,0, 0.001);
EM_select_flush();
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);

@ -2718,7 +2718,11 @@ void do_view3d_edit_mesh_edgesmenu(void *arg, int event)
EdgeSlide(0,0.0);
break;
case 13: /* Edge Loop Delete */
EdgeLoopDelete();
if(EdgeLoopDelete()) {
countall();
BIF_undo_push("Erase Edge Loop");
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
}
break;
case 14: /*Collapse Edges*/
collapseEdges();