diff --git a/Fltk/classificationEditor.cpp b/Fltk/classificationEditor.cpp index d61c69ee0fe5e2fe8a1a8d8e8b7764e9cfe60f48..f82e68bd07807ae450c3e455064f81d7034f7e03 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);