diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index 43d43654e407284d4efb9bc54ee00f96657a8416..a9a0cc0031a32266c26dc6e0befe72f0e97e93ae 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -597,7 +597,7 @@ void onelab_cb(Fl_Widget *w, void *data)
     updateOnelabGraphs();
     FlGui::instance()->onelab->rebuildTree();
 
-  } while(!FlGui::instance()->onelab->stop() && action == "compute" && 
+  } while(action == "compute" && !FlGui::instance()->onelab->stop() && 
           incrementLoop());
 
   FlGui::instance()->onelab->stop(false);
@@ -614,18 +614,11 @@ void onelab_stop_cb(Fl_Widget *w, void *data)
 
   if(action == "stop"){
     FlGui::instance()->onelab->deactivate("kill");
-    return;
   }
-
-  // Iterate over all other clients
-  for(onelab::server::citer it = onelab::server::instance()->firstClient();
-      it != onelab::server::instance()->lastClient(); it++){
-    onelab::client *c = it->second;
-    if(c->getName() == "Gmsh" || // local Gmsh client
-       c->getName() == "Listen" || // unknown client connecting through "-listen"
-       c->getName() == "GmshRemote") // distant post-processing Gmsh client
-      continue;
-    c->kill();
+  else{
+    for(onelab::server::citer it = onelab::server::instance()->firstClient();
+        it != onelab::server::instance()->lastClient(); it++)
+      it->second->kill();
   }
 }
 
@@ -910,8 +903,14 @@ void onelabWindow::activate()
 
 void onelabWindow::deactivate(const std::string &how)
 {
-  _butt[0]->label(how == "stop" ?  "Stop" : "Kill");
-  _butt[0]->callback(onelab_stop_cb, (how == "stop") ? (void*)"stop" : (void*)"kill");
+  if(how == "stop"){
+    _butt[0]->label("Stop");
+    _butt[0]->callback(onelab_stop_cb, (void*)"stop");
+  }
+  else{
+    _butt[0]->label("Kill");
+    _butt[0]->callback(onelab_stop_cb, (void*)"kill");
+  }
   _butt[1]->deactivate();
 }