diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 2d4d67fb0c611891efb1fd0309d480b3b1cc1603..f45bedc2b1a96cd4ea653f12e960e184a67d5fea 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.325 2005-01-01 19:35:27 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.326 2005-01-03 07:03:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -2796,37 +2796,12 @@ void view_toggle_cb(CALLBACK_ARGS)
   Draw();
 }
 
-static int RELOAD_ALL_VIEWS = 0;
-
-void view_reload_all_cb(CALLBACK_ARGS)
+static void _view_reload(int num)
 {
   if(!CTX.post.list)
     return;
-  RELOAD_ALL_VIEWS = 1;
-  for(int i = 0; i < List_Nbr(CTX.post.list); i++)
-    view_reload_cb(NULL, (void *)i);
-  RELOAD_ALL_VIEWS = 0;
-  Draw();
-}
 
-void view_reload_visible_cb(CALLBACK_ARGS)
-{
-  if(!CTX.post.list)
-    return;
-  RELOAD_ALL_VIEWS = 1;
-  for(int i = 0; i < List_Nbr(CTX.post.list); i++)
-    if(opt_view_visible(i, GMSH_GET, 0))
-      view_reload_cb(NULL, (void *)i);
-  RELOAD_ALL_VIEWS = 0;
-  Draw();
-}
-
-void view_reload_cb(CALLBACK_ARGS)
-{
-  if(!CTX.post.list)
-    return;
-
-  Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, (long)data);
+  Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, num);
 
   struct stat buf;
   if(stat(v->FileName, &buf)){
@@ -2838,7 +2813,7 @@ void view_reload_cb(CALLBACK_ARGS)
   MergeProblem(v->FileName);
   CTX.post.force_num = 0;
 
-  Post_View *v2 = *(Post_View **) List_Pointer(CTX.post.list, (long)data);
+  Post_View *v2 = *(Post_View **) List_Pointer(CTX.post.list, num);
   CopyViewOptions(v, v2);
 
   // In case the reloaded view has a different number of time steps
@@ -2846,9 +2821,37 @@ void view_reload_cb(CALLBACK_ARGS)
     v2->TimeStep = 0;
 
   FreeView(v);
+}
 
-  if(!RELOAD_ALL_VIEWS)
-    Draw();
+void view_reload_cb(CALLBACK_ARGS)
+{
+  _view_reload((long)data);
+  Draw();
+}
+
+void view_reload_all_cb(CALLBACK_ARGS)
+{
+  for(int i = 0; i < List_Nbr(CTX.post.list); i++)
+    _view_reload(i);
+  Draw();
+}
+
+void view_reload_visible_cb(CALLBACK_ARGS)
+{
+  for(int i = 0; i < List_Nbr(CTX.post.list); i++)
+    if(opt_view_visible(i, GMSH_GET, 0))
+      _view_reload(i);
+  Draw();
+}
+
+void view_remove_other_cb(CALLBACK_ARGS)
+{
+  if(!CTX.post.list) return;
+  for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--)
+    if(i != (long)data)
+      RemoveViewByIndex(i);
+  UpdateViewsInGUI();
+  Draw();
 }
 
 void view_remove_all_cb(CALLBACK_ARGS)
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index 04175ad91cc9a1cf48aaf025bd03ff7f68c16aa5..38ab4c219d46e8a8bde86b180793f3ca561b1db7 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -106,6 +106,7 @@ void view_reload_cb(CALLBACK_ARGS) ;
 void view_reload_all_cb(CALLBACK_ARGS) ;
 void view_reload_visible_cb(CALLBACK_ARGS) ;
 void view_remove_cb(CALLBACK_ARGS) ;
+void view_remove_other_cb(CALLBACK_ARGS) ;
 void view_remove_all_cb(CALLBACK_ARGS) ;
 void view_remove_visible_cb(CALLBACK_ARGS) ;
 void view_remove_invisible_cb(CALLBACK_ARGS) ;
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 74e9a2115eb3d144155c7451aef82ecb458f6036..d5e6707d06c375d322465692d01cc259ba762671 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.408 2005-01-01 19:35:28 geuzaine Exp $
+// $Id: GUI.cpp,v 1.409 2005-01-03 07:03:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -1147,34 +1147,36 @@ void GUI::set_context(Context_Item * menu_asked, int flag)
       for(int j = 0; j < 2; j++) {
 	p[j]->add("Reload/View", 0, 
 		  (Fl_Callback *) view_reload_cb, (void *)nb, 0);
+	p[j]->add("Reload/Visible Views", 0, 
+		  (Fl_Callback *) view_reload_visible_cb, (void *)nb, 0);
 	p[j]->add("Reload/All Views", 0, 
 		  (Fl_Callback *) view_reload_all_cb, (void *)nb, 0);
-	p[j]->add("Reload/All Visible Views", 0, 
-		  (Fl_Callback *) view_reload_visible_cb, (void *)nb, 0);
 	p[j]->add("Remove/View", FL_Delete, 
 		  (Fl_Callback *) view_remove_cb, (void *)nb, 0);
-	p[j]->add("Remove/All Views", 0, 
-		  (Fl_Callback *) view_remove_all_cb, (void *)nb, 0);
-	p[j]->add("Remove/All Visible Views", 0, 
+	p[j]->add("Remove/Other Views", 0, 
+		  (Fl_Callback *) view_remove_other_cb, (void *)nb, 0);
+	p[j]->add("Remove/Visible Views", 0, 
 		  (Fl_Callback *) view_remove_visible_cb, (void *)nb, 0);
-	p[j]->add("Remove/All Invisible Views", 0, 
+	p[j]->add("Remove/Invisible Views", 0, 
 		  (Fl_Callback *) view_remove_invisible_cb, (void *)nb, 0);
-	p[j]->add("Remove/All Empty Views", 0, 
+	p[j]->add("Remove/Empty Views", 0, 
 		  (Fl_Callback *) view_remove_empty_cb, (void *)nb, 0);
+	p[j]->add("Remove/All Views", 0, 
+		  (Fl_Callback *) view_remove_all_cb, (void *)nb, 0);
 	p[j]->add("Duplicate/View without Options", 0, 
 		  (Fl_Callback *) view_duplicate_cb, (void *)nb, 0);
 	p[j]->add("Duplicate/View with Options", 0, 
 		  (Fl_Callback *) view_duplicate_with_options_cb, (void *)nb, 0);
-	p[j]->add("Combine/Elements/From All Views", 0, 
-		  (Fl_Callback *) view_combine_space_all_cb, (void *)nb, 0);
 	p[j]->add("Combine/Elements/From Visible Views", 0, 
 		  (Fl_Callback *) view_combine_space_visible_cb, (void *)nb, 0);
+	p[j]->add("Combine/Elements/From All Views", 0, 
+		  (Fl_Callback *) view_combine_space_all_cb, (void *)nb, 0);
 	p[j]->add("Combine/Elements/By View Name", 0, 
 		  (Fl_Callback *) view_combine_space_by_name_cb, (void *)nb, 0);
-	p[j]->add("Combine/Time Steps/From All Views", 0, 
-		  (Fl_Callback *) view_combine_time_all_cb, (void *)nb, 0);
 	p[j]->add("Combine/Time Steps/From Visible Views", 0, 
 		  (Fl_Callback *) view_combine_time_visible_cb, (void *)nb, 0);
+	p[j]->add("Combine/Time Steps/From All Views", 0, 
+		  (Fl_Callback *) view_combine_time_all_cb, (void *)nb, 0);
 	p[j]->add("Combine/Time Steps/By View Name", 0, 
 		 (Fl_Callback *) view_combine_time_by_name_cb, (void *)nb, 0);
 	p[j]->add("Set Visibility/All On", 0,