diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 88b521478f1a06b5e46a7a99f798e61b9c2d69ef..dda33e34b1559bf97f5007fc9b69067d50e5cd65 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.542 2007-09-10 04:47:02 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.543 2007-09-10 05:31:35 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -56,19 +56,6 @@ extern GUI *WID;
 
 // Helper routines
 
-void UpdateViewsInGUI()
-{
-  if(WID) {
-    WID->check_anim_buttons();
-    if(WID->get_context() == 3)
-      WID->set_context(menu_post, 0);
-    WID->reset_option_browser();
-    WID->reset_plugin_view_browser();
-    WID->reset_clip_browser();
-    WID->reset_external_view_list();
-  }
-}
-
 int SetGlobalShortcut(int event)
 {
   return WID->global_shortcuts(event);
@@ -1836,7 +1823,7 @@ void statistics_histogram_cb(CALLBACK_ARGS)
   std::vector<double> x, y;
   for(int i = 0; i < 100; i++) y.push_back(WID->quality[type][i]);
   new PView(name, "# Elements", x, y);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
@@ -4266,7 +4253,7 @@ void view_remove_other_cb(CALLBACK_ARGS)
   if(PView::list.empty()) return;
   for(int i = PView::list.size() - 1; i >= 0; i--)
     if(i != (long)data) delete PView::list[i];
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
@@ -4274,7 +4261,7 @@ void view_remove_all_cb(CALLBACK_ARGS)
 {
   if(PView::list.empty()) return;
   while(PView::list.size()) delete PView::list[0];
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
@@ -4283,7 +4270,7 @@ void view_remove_visible_cb(CALLBACK_ARGS)
   if(PView::list.empty()) return;
   for(int i = PView::list.size() - 1; i >= 0; i--)
     if(opt_view_visible(i, GMSH_GET, 0)) delete PView::list[i];
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
@@ -4292,7 +4279,7 @@ void view_remove_invisible_cb(CALLBACK_ARGS)
   if(PView::list.empty()) return;
   for(int i = PView::list.size() - 1; i >= 0; i--)
     if(!opt_view_visible(i, GMSH_GET, 0)) delete PView::list[i];
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
@@ -4301,14 +4288,14 @@ void view_remove_empty_cb(CALLBACK_ARGS)
   if(PView::list.empty()) return;
   for(int i = PView::list.size() - 1; i >= 0; i--)
     if(PView::list[i]->getData()->empty()) delete PView::list[i];
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_remove_cb(CALLBACK_ARGS)
 {
   delete PView::list[(int)(long)data];
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
@@ -4362,56 +4349,56 @@ void view_save_msh_cb(CALLBACK_ARGS)
 void view_alias_cb(CALLBACK_ARGS)
 {
   new PView(PView::list[(int)(long)data], false);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_alias_with_options_cb(CALLBACK_ARGS)
 {
   new PView(PView::list[(int)(long)data], true);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_combine_space_all_cb(CALLBACK_ARGS)
 {
   PView::combine(false, 1, CTX.post.combine_remove_orig);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_combine_space_visible_cb(CALLBACK_ARGS)
 {
   PView::combine(false, 0, CTX.post.combine_remove_orig);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_combine_space_by_name_cb(CALLBACK_ARGS)
 {
   PView::combine(false, 2, CTX.post.combine_remove_orig);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_combine_time_all_cb(CALLBACK_ARGS)
 {
   PView::combine(true, 1, CTX.post.combine_remove_orig);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_combine_time_visible_cb(CALLBACK_ARGS)
 {
   PView::combine(true, 0, CTX.post.combine_remove_orig);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
 void view_combine_time_by_name_cb(CALLBACK_ARGS)
 {
   PView::combine(true, 2, CTX.post.combine_remove_orig);
-  UpdateViewsInGUI();
+  WID->update_views();
   Draw();
 }
 
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index 63f56af92535af01087875d1a88fa1af4edcebf4..49b4b14fd7a9d087a2ce6480acdd4494b638eca0 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -24,8 +24,8 @@
 
 #define CALLBACK_ARGS   Fl_Widget* w, void* data
 
-int SetGlobalShortcut(int event);
 void ManualPlay(int time, int step);
+int SetGlobalShortcut(int event);
 
 // Common callbacks
 
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index af5d476205eceade5b25afd780024cbfa5b688a9..13c3396e3ded84ab2daffbcd67e615f129e691ba 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.636 2007-09-10 04:47:02 geuzaine Exp $
+// $Id: GUI.cpp,v 1.637 2007-09-10 05:31:35 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -1544,6 +1544,19 @@ void GUI::set_title(char *str)
   g_window->label(str);
 }
 
+// Update GUI when views get added or deleted
+
+void GUI::update_views()
+{
+  check_anim_buttons();
+  if(get_context() == 3)
+    set_context(menu_post, 0);
+  reset_option_browser();
+  reset_plugin_view_browser();
+  reset_clip_browser();
+  reset_external_view_list();
+}
+
 // Set animation button
 
 void GUI::set_anim_buttons(int mode)
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 0d2ec1619ab76c056252a6f6c26579bff2f04b61..10b8a39e8edffbbbb75dd656e9ceb0ee694e1130 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -304,6 +304,7 @@ public:
   void set_size(int w, int h);
   void set_context(Context_Item menu[], int flag);
   int  get_context();
+  void update_views();
   void set_anim_buttons(int mode);
   void check_anim_buttons();
   void set_status(char *msg, int num);
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index a7654be1c44d034987f4160162c55669da6255ae..b1772684563c597fe08130942e4910b6802579df 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.109 2007-09-10 04:47:02 geuzaine Exp $
+// $Id: Main.cpp,v 1.110 2007-09-10 05:31:35 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -182,9 +182,11 @@ int main(int argc, char *argv[])
   OpenProject(CTX.filename);
   for(int i = 1; i < List_Nbr(CTX.files); i++)
     MergeFile(*(char**)List_Pointer(CTX.files, i));
-  if(CTX.post.combine_time)
+  if(CTX.post.combine_time){
     PView::combine(true, 2, CTX.post.combine_remove_orig);
-  
+    WID->update_views();
+  }
+
   // Init first context
   switch (CTX.initial_context) {
   case 1:
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index 609a098c5ab823ac56da85831435057b899092df..7e16d5f2c60e84167b17b764e808ffc2383384f6 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.159 2007-09-10 04:47:07 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.160 2007-09-10 05:31:35 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -42,7 +42,6 @@
 #include "SelectBuffer.h"
 #include "GUI.h"
 extern GUI *WID;
-extern void UpdateViewsInGUI();
 #endif
 
 extern Context_T CTX;
@@ -238,7 +237,7 @@ int ParseFile(char *f, int close, int warn_if_missing)
 
 #if defined(HAVE_FLTK)
   if(numViewsBefore != PView::list.size())
-    UpdateViewsInGUI();
+    WID->update_views();
 #endif
 
   return 1;
@@ -399,7 +398,7 @@ int MergeFile(char *name, int warn_if_missing)
 
 #if defined(HAVE_FLTK)
   if(numViewsBefore != PView::list.size())
-    UpdateViewsInGUI();
+    WID->update_views();
 #endif
 
   Msg(STATUS2, "Read '%s'", name);