diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 6048758029d324ddfc3257f2531fe3c9d6042825..dae7aae2cf476d5260ceb28394f811fca31efba4 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.98 2001-12-04 12:06:49 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.99 2001-12-04 16:42:42 geuzaine Exp $
 
 #include <sys/types.h>
 #include <signal.h>
@@ -684,6 +684,18 @@ void opt_visibility_number_cb(CALLBACK_ARGS){
     case 1: //element
       allelm = !allelm;
       velm = allelm ? VIS_MESH : 0;
+      tmp = Tree2List(THEM->Curves);
+      for(i=0; i<List_Nbr(tmp); i++){
+	List_Read(tmp, i, &c);
+	Tree_Action(c->Simplexes, vis_sim);
+      }
+      List_Delete(tmp);
+      tmp = Tree2List(THEM->Surfaces);
+      for(i=0; i<List_Nbr(tmp); i++){
+	List_Read(tmp, i, &s);
+	Tree_Action(s->Simplexes, vis_sim);
+      }
+      List_Delete(tmp);
       Tree_Action(THEM->Simplexes, vis_sim);
       tmp = Tree2List(THEM->Volumes);
       for(i=0; i<List_Nbr(tmp); i++){
@@ -693,6 +705,7 @@ void opt_visibility_number_cb(CALLBACK_ARGS){
 	Tree_Action(V->Pyramids, vis_pyr);
       }
       List_Delete(tmp);
+      break;
     case 2: //point
       allpnt = !allpnt;
       vnod = allpnt ? VIS_MESH|VIS_GEOM : 0;
@@ -731,27 +744,47 @@ void opt_visibility_number_cb(CALLBACK_ARGS){
       HH.Num = num; H = &HH;
       PP.Num = num; P = &PP;
       QQ.Num = num; Q = &QQ;
-      if((pS = (Simplex**)Tree_PQuery(THEM->Simplexes, &S))){
-	(*pS)->Visible = (*pS)->Visible ? 0 : VIS_MESH;
+      found = 0;
+      tmp = Tree2List(THEM->Curves);
+      for(i=0; i<List_Nbr(tmp); i++){
+	List_Read(tmp, i, &c);
+	if((pS = (Simplex**)Tree_PQuery(c->Simplexes, &S))){
+	  (*pS)->Visible = (*pS)->Visible ? 0 : VIS_MESH; found = 1; break;
+	}
       }
-      else{
-	found = 0;
-	tmp = Tree2List(THEM->Volumes);
+      List_Delete(tmp);
+      if(!found){
+	tmp = Tree2List(THEM->Surfaces);
 	for(i=0; i<List_Nbr(tmp); i++){
-	  List_Read(tmp, i, &V);
-	  if((pH = (Hexahedron**)Tree_PQuery(V->Hexahedra, &H))){
-	    (*pH)->Visible = (*pH)->Visible ? 0 : VIS_MESH; found = 1; break;
+	  List_Read(tmp, i, &s);
+	  if((pS = (Simplex**)Tree_PQuery(s->Simplexes, &S))){
+	    (*pS)->Visible = (*pS)->Visible ? 0 : VIS_MESH; found = 1; break;
 	  }
-	  if((pP = (Prism**)Tree_PQuery(V->Prisms, &P))){
-	    (*pP)->Visible = (*pP)->Visible ? 0 : VIS_MESH; found = 1; break;
+	}
+	List_Delete(tmp);
+	if(!found){
+	  if((pS = (Simplex**)Tree_PQuery(THEM->Simplexes, &S))){
+	    (*pS)->Visible = (*pS)->Visible ? 0 : VIS_MESH;
 	  }
-	  if((pQ = (Pyramid**)Tree_PQuery(V->Pyramids, &Q))){
-	    (*pQ)->Visible = (*pQ)->Visible ? 0 : VIS_MESH; found = 1; break;
+	  else{
+	    tmp = Tree2List(THEM->Volumes);
+	    for(i=0; i<List_Nbr(tmp); i++){
+	      List_Read(tmp, i, &V);
+	      if((pH = (Hexahedron**)Tree_PQuery(V->Hexahedra, &H))){
+		(*pH)->Visible = (*pH)->Visible ? 0 : VIS_MESH; found = 1; break;
+	      }
+	      if((pP = (Prism**)Tree_PQuery(V->Prisms, &P))){
+		(*pP)->Visible = (*pP)->Visible ? 0 : VIS_MESH; found = 1; break;
+	      }
+	      if((pQ = (Pyramid**)Tree_PQuery(V->Pyramids, &Q))){
+		(*pQ)->Visible = (*pQ)->Visible ? 0 : VIS_MESH; found = 1; break;
+	      }
+	    }
+	    List_Delete(tmp);
+	    if(!found) 
+	      Msg(WARNING, "Unknown element %d (use '*' to hide/show all elements)", num);
 	  }
 	}
-	List_Delete(tmp);
-	if(!found) 
-	  Msg(WARNING, "Unknown element %d (use '*' to hide/show all elements)", num);
       }
       break;
     case 2: //point