diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 91567dd007a4adf5909a7f399dcb6b362a7a7507..107795b5a59e5698cf48cb5daa315034a148e4db 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.401 2006-01-18 16:19:10 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.402 2006-01-23 21:26:34 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -2382,33 +2382,46 @@ static void _action_point_line_surface_volume(int action, int mode, char *what) char ib = SelectEntity(type, &ne, v, c, s); if(ib == 'l') { + // we don't use List_Insert in order to keep the original + // ordering (this is slower, but this way undo works as + // expected) for(int i = 0; i < ne; i++){ switch (type) { case ENT_POINT: - List_Add(List1, &v[i]->Num); + if(List_ISearchSeq(List1, &v[i]->Num, fcmp_int) < 0) + List_Add(List1, &v[i]->Num); break; case ENT_LINE: - List_Add(List1, &c[i]->Num); + if(List_ISearchSeq(List1, &c[i]->Num, fcmp_int) < 0) + List_Add(List1, &c[i]->Num); break; case ENT_SURFACE: - List_Add(List1, &s[i]->Num); + if(List_ISearchSeq(List1, &s[i]->Num, fcmp_int) < 0) + List_Add(List1, &s[i]->Num); break; } } } if(ib == 'r') { + // we don't use List_Suppress in order to keep the original + // ordering (this is slower, but this way undo works as + // expected) for(int i = 0; i < ne; i++){ + int index; switch (type) { case ENT_POINT: - List_Suppress(List1, &v[i]->Num, fcmp_int); + index = List_ISearchSeq(List1, &v[i]->Num, fcmp_int); + if(index >= 0) List_PSuppress(List1, index); ZeroHighlightEntity(v[i], NULL, NULL); break; case ENT_LINE: - List_Suppress(List1, &c[i]->Num, fcmp_int); + index = List_ISearchSeq(List1, &c[i]->Num, fcmp_int); + if(index >= 0) List_PSuppress(List1, index); ZeroHighlightEntity(NULL, c[i], NULL); break; case ENT_SURFACE: - List_Suppress(List1, &s[i]->Num, fcmp_int); + index = List_ISearchSeq(List1, &s[i]->Num, fcmp_int); + if(index >= 0) List_PSuppress(List1, index); ZeroHighlightEntity(NULL, NULL, s[i]); break; } diff --git a/TODO b/TODO index d0bab21daae02efa3ecf665fc538f8bd44f94a97..d2a2358de1fa8af017ed9f1b73f798a7e481ebfa 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,4 @@ -$Id: TODO,v 1.117 2006-01-23 20:59:07 geuzaine Exp $ - -******************************************************************** - -Should be ensure that there are no repeated entities in the lists -when creating physicals? +$Id: TODO,v 1.118 2006-01-23 21:26:34 geuzaine Exp $ ********************************************************************