diff --git a/Fltk/graphicWindow.cpp b/Fltk/graphicWindow.cpp
index 9298ca100c751fc2d229e932b6707a6b218773a4..82772aa0040e96dac1f5e6a42606a88e3c571e8a 100644
--- a/Fltk/graphicWindow.cpp
+++ b/Fltk/graphicWindow.cpp
@@ -133,28 +133,20 @@ static const char *input_formats =
   "Image - PNM" TT "*.pnm" NN
   "Image - PPM" TT "*.ppm" NN;
 
-static void file_open_cb(Fl_Widget *w, void *data)
-{
-  int n = PView::list.size();
-  if(fileChooser(FILE_CHOOSER_SINGLE, "Open", input_formats,
-                 GModel::current()->getFileName().c_str())) {
-    OpenProject(fileChooserGetName(1));
-    drawContext::global()->draw();
-  }
-  if(n != (int)PView::list.size())
-    FlGui::instance()->openModule("Post-processing");
-  if(CTX::instance()->launchSolverAtStartup >= 0)
-    solver_cb(0, (void*)CTX::instance()->launchSolverAtStartup);
-}
-
-static void file_merge_cb(Fl_Widget *w, void *data)
+static void file_open_merge_cb(Fl_Widget *w, void *data)
 {
+  if(!data) return;
+  std::string mode((char*)data);
   int n = PView::list.size();
-  int f = fileChooser(FILE_CHOOSER_MULTI, "Merge", input_formats,
-                      GModel::current()->getFileName().c_str());
-  if(f) {
-    for(int i = 1; i <= f; i++)
-      MergeFile(fileChooserGetName(i));
+  int f = fileChooser(FILE_CHOOSER_MULTI, (mode == "open") ? "Open" : "Merge",
+                      input_formats, GModel::current()->getFileName().c_str());
+  if(f){
+    for(int i = 1; i <= f; i++){
+      if(mode == "open")
+        OpenProject(fileChooserGetName(i));
+      else
+        MergeFile(fileChooserGetName(i));
+    }
     drawContext::global()->draw();
   }
   if(n != (int)PView::list.size())
@@ -1917,7 +1909,7 @@ static void mesh_define_compound_entity_cb(Fl_Widget *w, void *data)
 static Fl_Menu_Item bar_table[] = {
   {"&File", 0, 0, 0, FL_SUBMENU},
     {"&New...",     FL_CTRL+'n', (Fl_Callback *)file_new_cb, 0},
-    {"&Open...",    FL_CTRL+'o', (Fl_Callback *)file_open_cb, 0},
+    {"&Open...",    FL_CTRL+'o', (Fl_Callback *)file_open_merge_cb, (void*)"open"},
     {"Open Recent", 0, 0, 0, FL_SUBMENU},
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
@@ -1925,7 +1917,7 @@ static Fl_Menu_Item bar_table[] = {
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
       {0},
-    {"M&erge...",   FL_CTRL+FL_SHIFT+'o', (Fl_Callback *)file_merge_cb, 0},
+  {"M&erge...",   FL_CTRL+FL_SHIFT+'o', (Fl_Callback *)file_open_merge_cb, (void*)"merge"},
     {"Watch Pattern...",    0, (Fl_Callback *)file_watch_cb, 0},
     {"&Clear",      0, (Fl_Callback *)file_clear_cb, 0, FL_MENU_DIVIDER},
     {"Remote", 0, 0, 0, FL_MENU_DIVIDER | FL_SUBMENU},
@@ -1981,7 +1973,7 @@ static Fl_Menu_Item bar_table[] = {
 static Fl_Menu_Item sysbar_table[] = {
   {"File", 0, 0, 0, FL_SUBMENU},
     {"New...",     FL_META+'n', (Fl_Callback *)file_new_cb, 0},
-    {"Open...",    FL_META+'o', (Fl_Callback *)file_open_cb, 0},
+    {"Open...",    FL_META+'o', (Fl_Callback *)file_open_merge_cb, (void*)"open"},
     {"Open Recent", 0, 0, 0, FL_SUBMENU},
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
@@ -1989,7 +1981,7 @@ static Fl_Menu_Item sysbar_table[] = {
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
       {"", 0, (Fl_Callback *)file_open_recent_cb, 0},
       {0},
-    {"Merge...",   FL_META+FL_SHIFT+'o', (Fl_Callback *)file_merge_cb, 0},
+    {"Merge...",   FL_META+FL_SHIFT+'o', (Fl_Callback *)file_open_merge_cb, (void*)"merge"},
     {"Watch Pattern...",   0, (Fl_Callback *)file_watch_cb, 0},
     {"Clear",      0, (Fl_Callback *)file_clear_cb, 0, FL_MENU_DIVIDER},
     {"Remote", 0, 0, 0, FL_MENU_DIVIDER | FL_SUBMENU},