diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 9f1b857990100c5ff73e6af5b1994346f35a79e0..474e3a1b3023b64026bb3a05b13c8ba239d7e27c 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.490 2006-11-30 13:55:20 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.491 2006-12-01 14:32:29 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -2184,6 +2184,13 @@ void visibility_interactive_cb(CALLBACK_ARGS)
     what = ENT_VOLUME;
     opt_geometry_volumes(0, GMSH_SET | GMSH_GUI, 1);
   }
+  else if(!strcmp(str, "show_all")){
+    for(int i = 1; i <= 5; i++) // elements, points, lines, surfaces, volumes
+      VisibilityManager::instance()->setVisibilityByNumber(i, -1, true, false);
+    CTX.mesh.changed = ENT_ALL;
+    Draw();  
+    return;
+  }
   else
     return;
 
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index e805f906096d1ae4e735450b934549e8ce975d4d..9b5dc557aa1c3524c5255384538798bd36b38d3c 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.576 2006-11-30 14:10:49 geuzaine Exp $
+// $Id: GUI.cpp,v 1.577 2006-12-01 14:32:29 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -3960,6 +3960,9 @@ void GUI::create_visibility_window()
     butt4->callback(visibility_interactive_cb, (void *)"surfaces");
     Fl_Button *butt5 = new Fl_Button(2*WB, 3 * WB + 7 * BH, IW, BH, "Volumes");
     butt5->callback(visibility_interactive_cb, (void *)"volumes");
+
+    Fl_Button *butt6 = new Fl_Button(3*WB + IW, 3 * WB + 3 * BH, 2 * BH, 5*BH, "Show\nAll");
+    butt6->callback(visibility_interactive_cb, (void *)"show_all");
     
     vis_group[2]->end();
   }