diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index 9ae6d5a84a75fda2810703ea4713817a5cd85d2f..67f5fde6abdb925b3b3f9776b7324af40ec45d64 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -152,7 +152,7 @@ bool onelab::localNetworkClient::run()
     if(_pid < 0 || (command.empty() && !CTX::instance()->solver.listen))
       break;
 
-    int stop = server->NonBlockingWait(sock, 0., 0.);
+    int stop = server->NonBlockingWait(sock, 0.001, 0.);
 
     if(stop || _pid < 0 || (command.empty() && !CTX::instance()->solver.listen))
       break;
@@ -267,6 +267,7 @@ bool onelab::localNetworkClient::run()
       break;
     case GmshSocket::GMSH_MERGE_FILE:
       {
+        if(!FlGui::instance()->onelab->mergeAuto()) break;
         int n = PView::list.size();
         for(int i = 0; i < n; i++){
           if(PView::list[i]->getData()->getFileName().substr(0, 6) != "OneLab")
@@ -840,9 +841,11 @@ onelabWindow::onelabWindow(int deltaFontSize)
   _gear->add("Reset database", 0, onelab_cb, (void*)"reset");
   _gear->add("_Print database", 0, onelab_cb, (void*)"dump");
   _gear->add("Remesh automatically", 0, 0, 0, FL_MENU_TOGGLE);
+  _gear->add("Merge results automatically", 0, 0, 0, FL_MENU_TOGGLE);
   _gear->add("_Hide new views", 0, 0, 0, FL_MENU_TOGGLE);
   ((Fl_Menu_Item*)_gear->menu())[2].set();
-  ((Fl_Menu_Item*)_gear->menu())[3].clear();
+  ((Fl_Menu_Item*)_gear->menu())[3].set();
+  ((Fl_Menu_Item*)_gear->menu())[4].clear();
   _gearFrozenMenuSize = _gear->menu()->size();
 
   Fl_Box *resbox = new Fl_Box(WB, WB,
@@ -1001,23 +1004,27 @@ void onelabWindow::setButtonMode(const std::string &butt0, const std::string &bu
     _butt[1]->activate();
     _butt[1]->label("Compute");
     _butt[1]->callback(onelab_cb, (void*)"compute");
-    _gear->activate();
+    for(int i = 0; i < _gear->menu()->size(); i++)
+      ((Fl_Menu_Item*)_gear->menu())[i].activate();
   }
   else if(butt1 == "stop"){
     _butt[1]->activate();
     _butt[1]->label("Stop");
     _butt[1]->callback(onelab_cb, (void*)"stop");
-    _gear->deactivate();
+    for(int i = 0; i < _gear->menu()->size(); i++)
+      if(i < 1 || i > 4) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
   }
   else if(butt1 == "kill"){
     _butt[1]->activate();
     _butt[1]->label("Kill");
     _butt[1]->callback(onelab_cb, (void*)"kill");
-    _gear->deactivate();
+    for(int i = 0; i < _gear->menu()->size(); i++)
+      if(i < 1 || i > 4) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
   }
   else{
     _butt[1]->deactivate();
-    _gear->deactivate();
+    for(int i = 0; i < _gear->menu()->size(); i++)
+      if(i < 1 || i > 4) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
   }
 }
 
diff --git a/Fltk/onelabWindow.h b/Fltk/onelabWindow.h
index 371ce316ed1371521e31c2d1d7f3e0bb18f9745e..e7cd4c980ec977ccb7dc46fadb2f373e34cb16da 100644
--- a/Fltk/onelabWindow.h
+++ b/Fltk/onelabWindow.h
@@ -40,7 +40,8 @@ class onelabWindow{
   void show(){ _win->show(); }
   int shown(){ return _win->shown(); }
   int meshAuto(){ return _gear->menu()[2].value(); }
-  int hideNewViews(){ return _gear->menu()[3].value(); }
+  int mergeAuto(){ return _gear->menu()[3].value(); }
+  int hideNewViews(){ return _gear->menu()[4].value(); }
   std::string getPath(Fl_Tree_Item *item)
   {
     char path[1024];