diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 342b2c03ae5662d9fe833a7e8b602e05ee916f32..319212e11a3583fc1e83e0023d22136dfb1b3f59 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.493 2006-12-03 04:07:19 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.494 2006-12-14 02:44:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -1998,7 +1998,13 @@ void message_save_cb(CALLBACK_ARGS)
 void visibility_cb(CALLBACK_ARGS)
 {
   // get the visibility info from the model, and update the browser accordingly
-  WID->create_visibility_window();
+
+  char *str = (char*)data;
+  if(str && !strcmp(str, "redraw_only"))
+    WID->create_visibility_window(true);
+  else
+    WID->create_visibility_window();
+
   WID->vis_browser->clear();
 
   int type = WID->vis_type->value();
@@ -2060,7 +2066,7 @@ void visibility_delete_cb(CALLBACK_ARGS)
     GMODEL->deletePhysicalGroups();
   else if(type == 2)
     GMODEL->deleteMeshPartitions();
-  visibility_cb(NULL, NULL);
+  visibility_cb(NULL, (void*)"redraw_only");
 }
 
 void visibility_sort_cb(CALLBACK_ARGS)
@@ -2116,7 +2122,7 @@ void visibility_sort_cb(CALLBACK_ARGS)
   }
   else { // set new sorting mode
     VisibilityManager::instance()->setSortMode(val);
-    visibility_cb(NULL, NULL);
+    visibility_cb(NULL, (void*)"redraw_only");
   }
 }
 
@@ -2150,7 +2156,7 @@ void visibility_number_cb(CALLBACK_ARGS)
   VisibilityManager::instance()->setVisibilityByNumber(what, num, val, recursive);
 
   int pos = WID->vis_browser->position();
-  visibility_cb(NULL, NULL);
+  visibility_cb(NULL, (void*)"redraw_only");
   WID->vis_browser->position(pos);
   Draw();
 }
@@ -2304,7 +2310,7 @@ void visibility_interactive_cb(CALLBACK_ARGS)
 	}
       }
       int pos = WID->vis_browser->position();
-      visibility_cb(NULL, NULL);
+      visibility_cb(NULL, (void*)"redraw_only");
       WID->vis_browser->position(pos);
     }
     if(ib == 'q'){
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index e187a55e2c431faf2915d0be74e9c2dc1e7d9c0a..caf9b9f49d32e8818e27ac16702cf0388c66b01b 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.584 2006-12-12 01:39:15 geuzaine Exp $
+// $Id: GUI.cpp,v 1.585 2006-12-14 02:44:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -3828,11 +3828,13 @@ public:
     : Fl_Browser(x, y, w, h, c){}
 };
 
-void GUI::create_visibility_window()
+void GUI::create_visibility_window(bool redraw_only)
 {
-
   if(vis_window) {
-    vis_window->show();
+    if(vis_window->shown() && redraw_only)
+      vis_window->redraw();
+    else
+      vis_window->show();
     return;
   }
 
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 2306e381da7fa8734305701eba02e895102a063c..f161275051832cddc2471ccb9968723a4c7211fc 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -284,7 +284,7 @@ public:
   void create_post_options_window();
   PluginDialogBox *create_plugin_window(GMSH_Plugin *p);
   void create_view_options_window(int numview);
-  void create_visibility_window();
+  void create_visibility_window(bool redraw_only=false);
   void create_clip_window();
   void create_manip_window();
   void create_statistics_window();