From 04dfceaffb6add3a5d0ee0f27d35c304b63de785 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 5 Dec 2010 11:01:49 +0000
Subject: [PATCH] fix element delete

---
 Fltk/classificationEditor.cpp | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/Fltk/classificationEditor.cpp b/Fltk/classificationEditor.cpp
index d61c69ee0f..f82e68bd07 100644
--- a/Fltk/classificationEditor.cpp
+++ b/Fltk/classificationEditor.cpp
@@ -127,8 +127,12 @@ static void select_elements_cb(Fl_Widget *w, void *data)
         }
       }
       if(ib == 'r') {
-        for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++)
-          FlGui::instance()->selectedElements[i]->setVisibility(1);
+        for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++){
+          MElement *me = FlGui::instance()->selectedElements[i];
+          if(me->getVisibility() == 2)
+            e->elements.erase(std::find(e->elements.begin(), e->elements.end(), me));
+          me->setVisibility(1);
+        }
       }
       if(ib == 'e') { // ok, compute the edges
         GModel::current()->setSelection(0);
@@ -198,13 +202,18 @@ static void delete_edge_cb(Fl_Widget *w, void *data)
       for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++){
         MElement *me = FlGui::instance()->selectedElements[i];
         if(me->getType() == TYPE_LIN && me->getVisibility() != 2){
-          me->setVisibility(2); ele.push_back((MLine*)me);
+          me->setVisibility(2); 
+          ele.push_back((MLine*)me);
         }
       }
     }
     if(ib == 'r') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++)
-        FlGui::instance()->selectedElements[i]->setVisibility(1);
+      for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++){
+        MElement *me = FlGui::instance()->selectedElements[i];
+        if(me->getVisibility() == 2)
+          ele.erase(std::find(ele.begin(), ele.end(), me));
+        me->setVisibility(1);
+      }
     }
     if(ib == 'e') {
       GModel::current()->setSelection(0);
-- 
GitLab