From a69f3bef162c92941bbd6c5493e05d5efc02d98d Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 17 Oct 2011 13:43:40 +0000
Subject: [PATCH] onelab

---
 Fltk/menuWindow.cpp   | 8 ++++++--
 Fltk/onelabWindow.cpp | 9 +++++----
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/Fltk/menuWindow.cpp b/Fltk/menuWindow.cpp
index 5970d81012..02491b0ee4 100644
--- a/Fltk/menuWindow.cpp
+++ b/Fltk/menuWindow.cpp
@@ -1595,7 +1595,11 @@ static void geometry_physical_add_cb(Fl_Widget *w, void *data)
 
 void mesh_save_cb(Fl_Widget *w, void *data)
 {
-  bool force = data ? true : false;
+  bool force_overwrite = false;
+  if(data){
+    std::string str((const char*)data);
+    if(str == "force_overwrite") force_overwrite = true;
+  }
 
   std::string name = CTX::instance()->outputFileName;
   if(name.empty()){
@@ -1604,7 +1608,7 @@ void mesh_save_cb(Fl_Widget *w, void *data)
     else
       name = GetDefaultFileName(CTX::instance()->mesh.fileFormat);
   }
-  if(!force && CTX::instance()->confirmOverwrite) {
+  if(!force_overwrite && CTX::instance()->confirmOverwrite) {
     if(!StatFile(name))
       if(!fl_choice("File '%s' already exists.\n\nDo you want to replace it?",
                     "Cancel", "Replace", 0, name.c_str()))
diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index 8c671ca101..b4ca70bc35 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -240,19 +240,20 @@ void onelab_cb(Fl_Widget *w, void *data)
 
   FlGui::instance()->onelab->deactivate();
   
-  // Gmsh client is special (always gets executed first). The
+  // the Gmsh client is special: it always gets executed first. (The
   // meta-model will allow more flexibility: but in the simple GUI we
-  // can assume this
+  // can assume this)
   if(onelab::server::instance()->findClient("Gmsh") != 
      onelab::server::instance()->lastClient()){
-    // reload geometry if Gmsh parameters have been modified
+    // reload geometry and/or mesh if Gmsh parameters have been modified
     if(onelab::server::instance()->getChanged("Gmsh")){
       if(action == "check"){
         geometry_reload_cb(0, 0);
       }
       else if(action == "compute"){
+        geometry_reload_cb(0, 0);
         mesh_3d_cb(0, 0);
-        mesh_save_cb(0, (void*)"force");
+        mesh_save_cb(0, (void*)"force_overwrite");
         onelab::server::instance()->setChanged(false, "Gmsh");
       }
     }
-- 
GitLab