diff --git a/Common/Options.cpp b/Common/Options.cpp
index 205da1e1327b2c6b386ad9f9681234f665101f3f..248d29e124333efd3050c30a4936dd4f6ae1e757 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.71 2002-02-08 17:33:52 geuzaine Exp $
+// $Id: Options.cpp,v 1.72 2002-02-22 16:44:09 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -1615,6 +1615,10 @@ double opt_mesh_normals(OPT_ARGS_NUM){
 double opt_mesh_tangents(OPT_ARGS_NUM){
   if(action & GMSH_SET) 
     CTX.mesh.tangents = val;
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI))
+    WID->mesh_value[13]->value(CTX.mesh.tangents);
+#endif
   return CTX.mesh.tangents;
 }
 double opt_mesh_explode(OPT_ARGS_NUM){
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index b435f3bba73c5db31c41ef741b61e0ee66a64a0b..7503beb0297c69065d7c45e3ddeeb9c512d31a57 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.109 2002-02-20 16:45:33 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.110 2002-02-22 16:44:09 geuzaine Exp $
 
 #include <sys/types.h>
 #include <signal.h>
@@ -486,7 +486,8 @@ void opt_mesh_ok_cb(CALLBACK_ARGS) {
   opt_mesh_radius_inf(0, GMSH_SET, WID->mesh_value[6]->value());
   opt_mesh_radius_sup(0, GMSH_SET, WID->mesh_value[7]->value());
   opt_mesh_normals(0, GMSH_SET, WID->mesh_value[8]->value());
-  opt_mesh_explode(0, GMSH_SET, WID->mesh_value[9]->value());
+  opt_mesh_explode(0, GMSH_SET, WID->mesh_value[9]->value()); 
+  opt_mesh_tangents(0, GMSH_SET, WID->mesh_value[13]->value());
   opt_mesh_point_size(0, GMSH_SET, WID->mesh_value[10]->value());
   opt_mesh_line_width(0, GMSH_SET, WID->mesh_value[11]->value());
 
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 6818602dfc7553b626e259a8949d9eb95e2bc81a..41d4da70f0bdca40e5bc95f3a1d6c9eedac0d724 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.154 2002-02-20 16:41:20 geuzaine Exp $
+// $Id: GUI.cpp,v 1.155 2002-02-22 16:44:09 geuzaine Exp $
 
 // To make the interface as visually consistent as possible, please:
 // - use the IW, BB, BH, BW and WB values
@@ -1428,12 +1428,21 @@ void GUI::create_mesh_options_window(){
       mesh_value[8] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Normals");
       mesh_value[8]->minimum(0); 
       mesh_value[8]->maximum(100);
-      mesh_value[8]->step(1);
+      mesh_value[8]->step(0.1);
       for(i=4 ; i<9 ; i++){
 	mesh_value[i]->labelsize(CTX.fontsize);
 	mesh_value[i]->textsize(CTX.fontsize);
 	mesh_value[i]->align(FL_ALIGN_RIGHT);
       }
+
+      mesh_value[13] = new Fl_Value_Input(2*WB, 2*WB+8*BH, IW, BH, "Tangents");
+      mesh_value[13]->minimum(0); 
+      mesh_value[13]->maximum(100);
+      mesh_value[13]->step(0.1);
+      mesh_value[13]->labelsize(CTX.fontsize);
+      mesh_value[13]->textsize(CTX.fontsize);
+      mesh_value[13]->align(FL_ALIGN_RIGHT);
+
       o->end();
     }
     { 
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 3859e5644d6f4c747112ff2ddbc60274a2d8b8b7..026f1e0819495d97ffb7a1bbfb5384d85af9a813 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.46 2002-02-01 14:34:05 remacle Exp $
+// $Id: Mesh.cpp,v 1.47 2002-02-22 16:44:09 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -564,7 +564,7 @@ void Draw_Simplex_Surfaces (void *a, void *b){
 
 void Draw_Simplex_Curves(void *a,void *b){
   Simplex *s;
-  double Xc = 0.0 , Yc = 0.0, Zc = 0.0 ;
+  double Xc = 0.0 , Yc = 0.0, Zc = 0.0, m[3], mm ;
   char Num[100];
 
   s = *(Simplex**)a;
@@ -618,6 +618,20 @@ void Draw_Simplex_Curves(void *a,void *b){
     Draw_String(Num);
   }
 
+  if(CTX.mesh.tangents) {
+    glColor4ubv((GLubyte*)&CTX.color.mesh.tangents);
+    m[0] = X[1]-X[0];
+    m[1] = Y[1]-Y[0];
+    m[2] = Z[1]-Z[0];
+    norme(m);
+    m[0] *= CTX.mesh.tangents * CTX.pixel_equiv_x/CTX.s[0];
+    m[1] *= CTX.mesh.tangents * CTX.pixel_equiv_x/CTX.s[1];
+    m[2] *= CTX.mesh.tangents * CTX.pixel_equiv_x/CTX.s[2];
+    mm = sqrt(m[0]*m[0]+m[1]*m[1]+m[2]*m[2]);
+    Draw_Vector(DRAW_POST_ARROW, 0, Xc,Yc,Zc,mm,m[0],m[1],m[2],NULL);
+  }
+  
+
 
 }