diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index c2a7e0963912397d611c30f509dcad0330e7c717..26dbff5301a0d74b3b3de80e9e535b7c386d7b5d 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.373 2005-10-15 19:06:08 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.374 2005-10-15 20:38:35 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -2700,11 +2700,9 @@ void mesh_3d_cb(CALLBACK_ARGS)
   Msg(STATUS3N, "Ready");
 }
 
-void mesh_remesh_cb(CALLBACK_ARGS)
+void mesh_stl_cb(CALLBACK_ARGS)
 {
-  ReMesh(THEM);
-  Draw();
-  Msg(STATUS3N, "Ready");
+  WID->set_context(menu_mesh_stl, 0);
 }
 
 void mesh_degree_cb(CALLBACK_ARGS)
@@ -2738,6 +2736,13 @@ void mesh_optimize_cb(CALLBACK_ARGS)
   Msg(STATUS3N, "Ready");
 }
 
+void mesh_remesh_cb(CALLBACK_ARGS)
+{
+  ReMesh(THEM);
+  Draw();
+  Msg(STATUS3N, "Ready");
+}
+
 void mesh_update_edges_cb(CALLBACK_ARGS)
 {
   extern  void BDS_To_Mesh(Mesh *m);
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index 3df6b606d072d95129085907d4b7f3ad72da0089..ca39962dcfe7eace241211e2a5ce65cfa1f53e7b 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -271,6 +271,7 @@ void mesh_define_cb(CALLBACK_ARGS);
 void mesh_1d_cb(CALLBACK_ARGS);
 void mesh_2d_cb(CALLBACK_ARGS); 
 void mesh_3d_cb(CALLBACK_ARGS); 
+void mesh_stl_cb(CALLBACK_ARGS);
 void mesh_remesh_cb(CALLBACK_ARGS); 
 void mesh_update_edges_cb(CALLBACK_ARGS); 
 void mesh_update_more_edges_cb(CALLBACK_ARGS);
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index faaa653cfff8dcac9da79c3f34f332a1b9d78985..eb2fea99b81335555fd522d451506ca817fc24f3 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.460 2005-10-15 19:06:09 geuzaine Exp $
+// $Id: GUI.cpp,v 1.461 2005-10-15 20:38:35 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -324,17 +324,22 @@ Context_Item menu_mesh[] = {
   { "1D",     (Fl_Callback *)mesh_1d_cb } ,
   { "2D",     (Fl_Callback *)mesh_2d_cb } , 
   { "3D",     (Fl_Callback *)mesh_3d_cb } , 
+  { "STL",    (Fl_Callback *)mesh_stl_cb } , 
   { "First order",  (Fl_Callback *)mesh_degree_cb, (void*)1 } , 
   { "Second order", (Fl_Callback *)mesh_degree_cb, (void*)2 } , 
 #if defined(HAVE_NETGEN)
   { "Optimize quality", (Fl_Callback *)mesh_optimize_cb } , 
 #endif
-  { "Update STL edges", (Fl_Callback *)mesh_update_edges_cb } , 
-  { "Add STL edges", (Fl_Callback *)mesh_update_more_edges_cb } , 
-  { "Remesh STL", (Fl_Callback *)mesh_remesh_cb } , 
   { "Save",   (Fl_Callback *)mesh_save_cb } ,
   { NULL } 
 };  
+    Context_Item menu_mesh_stl[] = {
+      { "1Mesh > STL", NULL } ,
+      { "Update edges", (Fl_Callback *)mesh_update_edges_cb } , 
+      { "Manually add edges", (Fl_Callback *)mesh_update_more_edges_cb } , 
+      { "Remesh", (Fl_Callback *)mesh_remesh_cb } , 
+      { NULL } 
+    };  
     Context_Item menu_mesh_define[] = {
       { "1Mesh > Define", NULL } ,
       { "Characteristic length", (Fl_Callback *)mesh_define_length_cb  } ,
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 8f616a05f53a2d7d35dbb02961913a90e0cdee46..3dc419df432b9292ddcd8acdf7dc1b3b16c7e06b 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -84,6 +84,7 @@ extern        Context_Item menu_geometry_elementary_delete[];
 extern    Context_Item menu_geometry_physical[]; 
 extern        Context_Item menu_geometry_physical_add[]; 
 extern Context_Item menu_mesh[]; 
+extern    Context_Item menu_mesh_stl[]; 
 extern    Context_Item menu_mesh_define[]; 
 extern        Context_Item menu_mesh_define_transfinite[]; 
 extern Context_Item menu_solver[];