diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp
index 4464c6502242eede57374872383fd6accc451336..49227e3fd528605af07bf575c99d2232c7456e94 100644
--- a/Fltk/onelabGroup.cpp
+++ b/Fltk/onelabGroup.cpp
@@ -762,7 +762,7 @@ void onelab_cb(Fl_Widget *w, void *data)
 
   if(action == "refresh"){
     updateGraphs();
-    FlGui::instance()->rebuildTree(false); // for Amandine
+    FlGui::instance()->rebuildTree(true);
     return;
   }
 
@@ -1909,9 +1909,8 @@ std::string onelabGroup::getPath(Fl_Tree_Item *item)
   return std::string(path);
 }
 
-void onelabGroup::rebuildSolverList()
+void onelabGroup::updateGearMenu()
 {
-  // update gear menu
   Fl_Menu_Item* menu = (Fl_Menu_Item*)_gear->menu();
   int values[8] = {CTX::instance()->solver.autoSaveDatabase,
                    CTX::instance()->solver.autoArchiveOutputFiles,
@@ -1928,8 +1927,12 @@ void onelabGroup::rebuildSolverList()
     else
       menu[idx].clear();
   }
+}
+
+void onelabGroup::rebuildSolverList()
+{
+  updateGearMenu();
 
-  // update Gmsh solver menu
   std::vector<std::string> names, exes, hosts;
   for(int i = 0; i < NUM_SOLVERS; i++){
     if(opt_solver_name(i, GMSH_GET, "").size()){
@@ -2038,6 +2041,7 @@ void solver_cb(Fl_Widget *w, void *data)
       onelab_cb(0, (void*)"check");
     else
       onelab_cb(0, (void*)"refresh");
+    FlGui::instance()->onelab->updateGearMenu();
   }
 
   CTX::instance()->launchSolverAtStartup = -1;
diff --git a/Fltk/onelabGroup.h b/Fltk/onelabGroup.h
index 3373b24a4d60ede75f0474f00272759483e60540..f125872ab3573795af5ea5bd9f83532e8b16300a 100644
--- a/Fltk/onelabGroup.h
+++ b/Fltk/onelabGroup.h
@@ -47,6 +47,7 @@ class onelabGroup : public Fl_Group{
   void _addGmshMenus();
  public:
   onelabGroup(int x, int y, int w, int h, const char *l=0);
+  void updateGearMenu();
   void rebuildSolverList();
   void rebuildTree(bool deleteWidgets);
   void enableTreeWidgetResize(bool value){ _enableTreeWidgetResize = value; }