diff --git a/Common/onelabUtils.cpp b/Common/onelabUtils.cpp
index a5015016fd979c0a99bc77248189756e3729fffd..c46c1e8020d83dd4a968ebdfcac1e909546ea891 100644
--- a/Common/onelabUtils.cpp
+++ b/Common/onelabUtils.cpp
@@ -276,12 +276,18 @@ namespace onelabUtils {
 
     onelab::client *c = it->second;
     std::string mshFileName = onelabUtils::getMshFileName(c);
-    if(action == "initialize") return redraw;
 
     static std::string modelName = GModel::current()->getName();
     static bool firstComputation = true;
 
-    if(action == "check"){
+    if(action == "initialize"){
+      // nothing to do
+    }
+    else if(action == "reset"){
+      firstComputation = false;
+      OpenProject(GModel::current()->getFileName());
+    }
+    else if(action == "check"){
       if(onelab::server::instance()->getChanged("Gmsh") ||
          modelName != GModel::current()->getName()){
         // reload geometry if Gmsh parameters have been modified or if the model
diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index a55cc8eaabdfa253c3fca9e67f8b2a2b3e9f9ff6..ff1b71cdfe9c4751b719f7f6ac35770b9c8123bc 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -523,7 +523,7 @@ void onelab_cb(Fl_Widget *w, void *data)
     onelab::server::instance()->clear();
     if(onelab::server::instance()->findClient("Gmsh") !=
        onelab::server::instance()->lastClient())
-      geometry_reload_cb(0, 0);
+      onelabUtils::runGmshClient(action, CTX::instance()->solver.autoMesh);
     for(unsigned int i = 0; i < useCommandLines.size(); i++)
       onelab::server::instance()->set(useCommandLines[i]);
     for(unsigned int i = 0; i < guessModelNames.size(); i++)