extern void EM_convertsel(short oldmode, short selectmode);
extern void EM_remove_selection(void *data, int type);
extern void EM_store_selection(void *data, int type);
+extern void EM_validate_selections(void);
extern int EM_nfaces_selected(void);
extern int EM_nvertices_selected(void);
if(efa->f & SELECT) G.totfacesel++;
}
- /*add code to strip editselections*/
+ EM_validate_selections();
}
else if (G.obedit->type==OB_ARMATURE){
for (ebo=G.edbo.first;ebo;ebo=ebo->next){
#include "editmesh.h"
-/* ********* Selection ************ */
+/* ********* Selection History ************ */
static int EM_check_selection(void *data)
{
EditSelection *ese;
}
}
+void EM_validate_selections(void)
+{
+ EditSelection *ese, *nextese;
+ EditMesh *em = G.editMesh;
+ ese = em->selected.first;
+ while(ese){
+ nextese = ese->next;
+ if(ese->type == EDITVERT && !(((EditVert*)ese->data)->f & SELECT)) BLI_freelinkN(&(em->selected), ese);
+ else if(ese->type == EDITEDGE && !(((EditEdge*)ese->data)->f & SELECT)) BLI_freelinkN(&(em->selected), ese);
+ else if(ese->type == EDITFACE && !(((EditFace*)ese->data)->f & SELECT)) BLI_freelinkN(&(em->selected), ese);
+ ese = nextese;
+ }
+}
+
static void EM_strip_selections(void)
{
EditSelection *ese, *nextese;