diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index da2d26919e233a49db289c4e863ff7941d936c49..90355d0480a9e297917bd06cdb0f8b09588b55eb 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -536,8 +536,7 @@ void onelab_cb(Fl_Widget *w, void *data)
   } while(action == "compute" && !FlGui::instance()->onelab->stop() &&
           incrementLoops());
 
-  bool autoSaveDb = false;
-  if(action == "compute" && autoSaveDb){
+  if(FlGui::instance()->onelab->saveAuto() && action == "compute"){
     std::string s = SplitFileName(GModel::current()->getFileName())[0] + "onelab.db";
     writeDb(s, true);
   }
@@ -613,14 +612,16 @@ onelabWindow::onelabWindow(int deltaFontSize)
   _gear->add("Reset database", 0, onelab_cb, (void*)"reset");
   _gear->add("Save database...", 0, onelab_cb, (void*)"save");
   _gear->add("_Load database...", 0, onelab_cb, (void*)"load");
+  _gear->add("Save database automatically", 0, 0, 0, FL_MENU_TOGGLE);
+  ((Fl_Menu_Item*)_gear->menu())[3].clear();
   _gear->add("Remesh automatically", 0, 0, 0, FL_MENU_TOGGLE);
+  ((Fl_Menu_Item*)_gear->menu())[4].set();
   _gear->add("Merge results automatically", 0, 0, 0, FL_MENU_TOGGLE);
+  ((Fl_Menu_Item*)_gear->menu())[5].set();
   _gear->add("Hide new views", 0, 0, 0, FL_MENU_TOGGLE);
+  ((Fl_Menu_Item*)_gear->menu())[6].clear();
   _gear->add("_Always show last step", 0, 0, 0, FL_MENU_TOGGLE);
-  ((Fl_Menu_Item*)_gear->menu())[3].set();
-  ((Fl_Menu_Item*)_gear->menu())[4].set();
-  ((Fl_Menu_Item*)_gear->menu())[5].clear();
-  ((Fl_Menu_Item*)_gear->menu())[6].set();
+  ((Fl_Menu_Item*)_gear->menu())[7].set();
   _gearFrozenMenuSize = _gear->menu()->size();
 
   Fl_Box *resbox = new Fl_Box(WB, WB,
@@ -636,10 +637,11 @@ onelabWindow::onelabWindow(int deltaFontSize)
   FL_NORMAL_SIZE += _deltaFontSize;
 }
 
-int onelabWindow::meshAuto(){ return _gear->menu()[3].value(); }
-int onelabWindow::mergeAuto(){ return _gear->menu()[4].value(); }
-int onelabWindow::hideNewViews(){ return _gear->menu()[5].value(); }
-int onelabWindow::showLastStep(){ return _gear->menu()[6].value(); }
+int onelabWindow::saveAuto(){ return _gear->menu()[3].value(); }
+int onelabWindow::meshAuto(){ return _gear->menu()[4].value(); }
+int onelabWindow::mergeAuto(){ return _gear->menu()[5].value(); }
+int onelabWindow::hideNewViews(){ return _gear->menu()[6].value(); }
+int onelabWindow::showLastStep(){ return _gear->menu()[7].value(); }
 
 static bool getFlColor(const std::string &str, Fl_Color &c)
 {
@@ -1066,19 +1068,19 @@ void onelabWindow::setButtonMode(const std::string &butt0, const std::string &bu
     _butt[1]->label("Stop");
     _butt[1]->callback(onelab_cb, (void*)"stop");
     for(int i = 0; i < _gear->menu()->size(); i++)
-      if(i < 1 || i > 6) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
+      if(i < 3 || i > 7) ((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");
     for(int i = 0; i < _gear->menu()->size(); i++)
-      if(i < 1 || i > 6) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
+      if(i < 3 || i > 7) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
   }
   else{
     _butt[1]->deactivate();
     for(int i = 0; i < _gear->menu()->size(); i++)
-      if(i < 1 || i > 6) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
+      if(i < 3 || i > 7) ((Fl_Menu_Item*)_gear->menu())[i].deactivate();
   }
 }
 
diff --git a/Fltk/onelabWindow.h b/Fltk/onelabWindow.h
index ba2719b8d0aa617023fb3611b687708c2d7e6b90..dcc109b01f919145fbee08f4b83f2aadfca3fd68 100644
--- a/Fltk/onelabWindow.h
+++ b/Fltk/onelabWindow.h
@@ -51,6 +51,7 @@ class onelabWindow{
   bool isBusy();
   void show(){ _win->show(); }
   int shown(){ return _win->shown(); }
+  int saveAuto();
   int meshAuto();
   int mergeAuto();
   int hideNewViews();