diff --git a/Common/Visibility.cpp b/Common/Visibility.cpp
index 1fd3ad5d5a86a2b26f72fec5014ff8aa7a008697..06dfc214f1e4a1dcb398ff387e0567f81ec51bb5 100644
--- a/Common/Visibility.cpp
+++ b/Common/Visibility.cpp
@@ -1,4 +1,4 @@
-// $Id: Visibility.cpp,v 1.12 2006-01-06 00:34:21 geuzaine Exp $
+// $Id: Visibility.cpp,v 1.13 2006-08-11 18:48:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,6 +19,18 @@
 // 
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
+/*
+std::vector<int> GModel::getMeshPartitions()
+{
+  std::vector<int> part;
+  std::set<int>::const_iterator it = meshPartitions.begin();
+  std::set<int>::const_iterator ite = meshPartitions.end();
+  for(; it != ite; ++it) part.push_back(*it);
+  std::sort(part.begin(), part.end());
+  return part;
+}
+*/
+
 #include "Gmsh.h"
 #include "Geo.h"
 #include "CAD.h"
diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index 4e4df8703e6a7c7e15f342251c7d0463e488a256..0ed3301e4e476f846230a81669cc049b3055f784 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -1,6 +1,7 @@
+#include <algorithm>
+#include "GModel.h"
 #include "GEdge.h"
 #include "GmshDefines.h"
-#include <algorithm>
 
 void GEdge::addFace(GFace *e)
 { 
@@ -37,3 +38,10 @@ GEdge::~GEdge()
   lines.clear();
 }
 
+void GEdge::recomputeMeshPartitions()
+{
+  for(unsigned int i = 0; i < lines.size(); i++) {
+    int part = lines[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+}
diff --git a/Geo/GEdge.h b/Geo/GEdge.h
index 8e242869ddd746865c105fde3df94c29111cbec0..1a51ae5eadd840033bec8cb21e7655b02ab84295 100644
--- a/Geo/GEdge.h
+++ b/Geo/GEdge.h
@@ -31,7 +31,7 @@ class GEdge : public GEntity {
   virtual double parFromPoint(const SPoint3 &) const = 0;
 
   // Get the point for the given parameter location.
-  virtual GPoint point(double p) const = 0;  
+  virtual GPoint point(double p) const = 0;
 
   // Get the closest point on the edge to the given point.
   virtual GPoint closestPoint(const SPoint3 & queryPoint) =0;
@@ -43,7 +43,10 @@ class GEdge : public GEntity {
   virtual SVector3 firstDer(double par) const = 0;
 
   // reparmaterize the point onto the given face.
-  virtual SPoint2 reparamOnFace(GFace *face, double epar,int dir) const = 0;			  
+  virtual SPoint2 reparamOnFace(GFace *face, double epar,int dir) const = 0;
+
+  // recompute the mesh partitions defined on this edge.
+  void recomputeMeshPartitions();
 
   void addFace(GFace *f);
   void delFace(GFace *f);
diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index 1073024d7e4818a91ddb8214c5cc9077a233e323..01a587318333a3f012a55603ae3f58a5c8dc492e 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -1,3 +1,4 @@
+#include "GModel.h"
 #include "GFace.h"
 #include "GEdge.h"
 
@@ -38,3 +39,15 @@ std::list<GVertex*> GFace::vertices() const
   }
   return ret;
 }
+
+void GFace::recomputeMeshPartitions()
+{
+  for(unsigned int i = 0; i < triangles.size(); i++) {
+    int part = triangles[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+  for(unsigned int i = 0; i < quadrangles.size(); i++) {
+    int part = quadrangles[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+}
diff --git a/Geo/GFace.h b/Geo/GFace.h
index 4de029734b9b48c3280ae930420ba8ab7f52c80e..943b7c25c16529585de0bee26c5fafdd3d9f7b1e 100644
--- a/Geo/GFace.h
+++ b/Geo/GFace.h
@@ -27,20 +27,19 @@ class GFace : public GEntity
   GRegion *r1, *r2;
 
  public:
-  GFace(GModel *model, int tag) : GEntity(model,tag), r1(0), r2(0) {}
+  GFace(GModel *model, int tag) : GEntity(model, tag), r1(0), r2(0) {}
   virtual ~GFace();
 
-  void addRegion(GRegion *r){ r1?r2=r:r1=r;  }
-  void delRegion(GRegion *r){ if(r1==r)r1=r2;r2=0;  }
+  void addRegion(GRegion *r){ r1 ? r2 = r : r1 = r; }
+  void delRegion(GRegion *r){ if(r1 == r) r1 = r2; r2=0; }
 
-  /// edge orientations.
+  // edge orientations.
   virtual std::list<int> orientations() const{return l_dirs;}
-  /// Edges that bound this entity or that this entity bounds.
+  // Edges that bound this entity or that this entity bounds.
   virtual std::list<GEdge*> edges() const{return l_edges;}
-  /// Edges that bound this entity or that this entity bounds.
+  // Edges that bound this entity or that this entity bounds.
   virtual std::list<GVertex*> vertices() const;
 
-
   virtual int dim() const {return 2;}
 
   // Get the location of any parametric degeneracies on the face in
@@ -74,6 +73,9 @@ class GFace : public GEntity
   // to worry about that.
   virtual bool surfPeriodic(int dim) const = 0;
 
+  // recompute the mesh partitions defined on this face.
+  void recomputeMeshPartitions();
+
   std::vector<MTriangle*> triangles;
   std::vector<MQuadrangle*> quadrangles;
   mean_plane mp;
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 3cdc661650130e67c09d53993bc38209197fa3c3..12cb1140e9a3c99ee2e6138b26dfea562abcc330 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1,18 +1,5 @@
 #include "GModel.h"
 
-int GModel::meshStatus()
-{
-  for(riter it = firstRegion(); it != lastRegion(); ++it)
-    if((*it)->mesh_vertices.size()) return 3;
-  for(fiter it = firstFace(); it != lastFace(); ++it)
-    if((*it)->mesh_vertices.size()) return 2;
-  for(eiter it = firstEdge(); it != lastEdge(); ++it)
-    if((*it)->mesh_vertices.size()) return 1;
-  for(viter it = firstVertex(); it != lastVertex(); ++it)
-    if((*it)->mesh_vertices.size()) return 0;
-  return -1;
-}
-
 GRegion * GModel::regionByTag(int n) const
 {
   GEntity tmp((GModel*)this, n);
@@ -71,7 +58,7 @@ int GModel::renumberMeshVertices()
   return numVertices;
 }
 
-bool GModel::noPhysicals()
+bool GModel::noPhysicalGroups()
 {
   for(viter it = firstVertex(); it != lastVertex(); ++it)
     if((*it)->physicals.size()) return false;
@@ -110,14 +97,30 @@ SBoundingBox3d GModel::recomputeBounds()
   SBoundingBox3d bb;
   for(viter it = firstVertex(); it != lastVertex(); ++it)
     bb += (*it)->bounds();
-  /*
+  boundingBox = bb;
+  return boundingBox;
+}
+
+int GModel::getMeshStatus()
+{
+  for(riter it = firstRegion(); it != lastRegion(); ++it)
+    if((*it)->mesh_vertices.size()) return 3;
+  for(fiter it = firstFace(); it != lastFace(); ++it)
+    if((*it)->mesh_vertices.size()) return 2;
   for(eiter it = firstEdge(); it != lastEdge(); ++it)
-    bb += (*it)->bounds();
+    if((*it)->mesh_vertices.size()) return 1;
+  for(viter it = firstVertex(); it != lastVertex(); ++it)
+    if((*it)->mesh_vertices.size()) return 0;
+  return -1;
+}
+
+std::set<int> &GModel::recomputeMeshPartitions()
+{
+  for(eiter it = firstEdge(); it != lastEdge(); ++it)
+    (*it)->recomputeMeshPartitions();
   for(fiter it = firstFace(); it != lastFace(); ++it)
-    bb += (*it)->bounds();
+    (*it)->recomputeMeshPartitions();
   for(riter it = firstRegion(); it != lastRegion(); ++it)
-    bb += (*it)->bounds();
-  */
-  boundingBox = bb;
-  return bounds();
+    (*it)->recomputeMeshPartitions();
+  return meshPartitions;
 }
diff --git a/Geo/GModel.h b/Geo/GModel.h
index f83d092cbc9efba21fa40e8004fbdf13ac377734..9639e0a757a6be7b6dacf7f1ebb83dbd2e354a63 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -21,6 +21,7 @@ class GModel
   std::set<GEdge*, GEntityLessThan> edges;
   std::set<GVertex*, GEntityLessThan> vertices;
   SBoundingBox3d boundingBox;
+  std::set<int> meshPartitions;
 
  public:
   GModel(const std::string &name) : modelName(name) {}
@@ -34,9 +35,6 @@ class GModel
   // Returns the geometric tolerance for the entire model.
   virtual double tolerance() const { return 1.e-14; }
 
-  // Returns the mesh status for the entire model.
-  virtual int meshStatus();
-
   // Get the number of regions in this model.
   int numRegion() const { return regions.size(); }
   int numFace() const { return faces.size(); }
@@ -73,15 +71,22 @@ class GModel
   int renumberMeshVertices();
 
   // Checks if there are no physical entities in the model
-  bool noPhysicals();
+  bool noPhysicalGroups();
 
   // Returns all physical groups (one map per dimension: 0-D to 3-D)
   void getPhysicalGroups(std::map<int, std::vector<GEntity*> > groups[4]);
 
   // The bounding box
-  virtual SBoundingBox3d bounds() { return boundingBox; }
+  virtual SBoundingBox3d getBounds() { return boundingBox; }
   virtual SBoundingBox3d recomputeBounds();
 
+  // Returns the mesh status for the entire model.
+  virtual int getMeshStatus();
+
+  // The list of partitions
+  virtual std::set<int> &getMeshPartitions() { return meshPartitions; }
+  virtual std::set<int> &recomputeMeshPartitions();
+
   // IO routines
   int readMSH(const std::string &name);
   int writeMSH(const std::string &name, double version=1.0, bool saveAll=false,
diff --git a/Geo/GModelIO.cpp b/Geo/GModelIO.cpp
index 4419a2f4a6a549a7ddd48824cb98c835892d8d00..2bb27d328c7867ffdda95b04c647a2911ca1c44c 100644
--- a/Geo/GModelIO.cpp
+++ b/Geo/GModelIO.cpp
@@ -214,7 +214,7 @@ int GModel::readMSH(const std::string &name)
 
       int progress = (numElements > 100000) ? numElements / 50 : numElements / 10;
       for(int i = 0; i < numElements; i++) {
-	int num, type, physical = 1, elementary = 1, partition = 1, numVertices;
+	int num, type, physical = 0, elementary = 0, partition = 0, numVertices;
 	if(version <= 1.0){
 	  fscanf(fp, "%d %d %d %d %d", &num, &type, &physical, &elementary, &numVertices);
 	  int check = getNumVerticesForElementTypeMSH(type);
@@ -300,9 +300,13 @@ int GModel::readMSH(const std::string &name)
           break;
         }
 
-	if(!physicals[dim].count(elementary) || !physicals[dim][elementary].count(physical))
-	  physicals[dim][elementary][physical] = "unnamed";
-	
+	if(physical){
+	  if(!physicals[dim].count(elementary) || !physicals[dim][elementary].count(physical))
+	    physicals[dim][elementary][physical] = "unnamed";
+	}
+
+	if(partition) meshPartitions.insert(partition);
+
 	if(progress && (i % progress == progress - 1))
 	  Msg(PROGRESS, "Read %d elements", i + 1);
       }
@@ -381,7 +385,7 @@ int GModel::writeMSH(const std::string &name, double version, bool saveAll,
   }
 
   // if there are no physicals we save all the elements
-  if(noPhysicals()) saveAll = true;
+  if(noPhysicalGroups()) saveAll = true;
 
   // get the number of vertices and renumber the vertices in a
   // continuous sequence
diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp
index 34430467e6aebf5288f9f8295826f53e6b796d4c..8bac8f2b477b621ea6df1a91a4b6650f578665ea 100644
--- a/Geo/GRegion.cpp
+++ b/Geo/GRegion.cpp
@@ -1,3 +1,4 @@
+#include "GModel.h"
 #include "GRegion.h"
 #include "GFace.h"
 
@@ -30,3 +31,23 @@ GRegion::~GRegion ()
     delete pyramids[i];
   pyramids.clear();
 }
+
+void GRegion::recomputeMeshPartitions()
+{
+  for(unsigned int i = 0; i < tetrahedra.size(); i++) {
+    int part = tetrahedra[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+  for(unsigned int i = 0; i < hexahedra.size(); i++) {
+    int part = hexahedra[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+  for(unsigned int i = 0; i < prisms.size(); i++) {
+    int part = prisms[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+  for(unsigned int i = 0; i < pyramids.size(); i++) {
+    int part = pyramids[i]->getPartition();
+    if(part) model()->getMeshPartitions().insert(part);
+  }
+}
diff --git a/Geo/GRegion.h b/Geo/GRegion.h
index 5e616f888572e032042ca18208118d7915ea83af..fcc0576a97418497525345a21e053332c463d5cc 100644
--- a/Geo/GRegion.h
+++ b/Geo/GRegion.h
@@ -14,6 +14,10 @@ class GRegion : public GEntity {
   virtual ~GRegion();
   virtual int dim() const {return 3;}
   virtual GeomType geomType() const {return Volume;}
+
+  // recompute the mesh partitions defined on this region.
+  void recomputeMeshPartitions();
+
   std::vector<MTetrahedron*> tetrahedra;
   std::vector<MHexahedron*> hexahedra;
   std::vector<MPrism*> prisms;
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 6adf9dafcab354959f2afe74b8f9a673c75cba15..918be313009cb7dbd8733d9841b0faf2f4d58002 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -78,7 +78,13 @@ class MElement
 
   // get a face representation for drawing
   virtual int getNumFacesRep(){ return getNumFaces(); }
-  virtual void getFaceRep(int num, MVertex *v[4]){ getFace(num, v); }
+  virtual void getFaceRep(int num, MVertex *v[4], double n[3]=0)
+  { 
+    getFace(num, v); 
+    if(n) normal3points(v[0]->x(), v[0]->y(), v[0]->y(),
+			v[1]->x(), v[1]->y(), v[1]->y(),
+			v[2]->x(), v[2]->y(), v[2]->y(), n);
+  }
 
   // get the max/min edge length
   virtual double maxEdge();
@@ -221,7 +227,7 @@ class MTriangle2 : public MTriangle {
     v[1] = i1 < 3? _v[i1] : _vs[i1 - 3];
   }
   int getNumFacesRep(){ return 4; }
-  void getFaceRep(int num, MVertex *v[4])
+  void getFaceRep(int num, MVertex *v[4], double n[3]=0)
   { 
     static int trifaces_tri2[4][3] = {
       {0, 3, 5},
@@ -236,6 +242,9 @@ class MTriangle2 : public MTriangle {
     v[1] = i1 < 3? _v[i1] : _vs[i1 - 3];
     v[2] = i2 < 3? _v[i2] : _vs[i2 - 3];
     v[3] = 0;
+    if(n) normal3points(v[0]->x(), v[0]->y(), v[0]->y(),
+			v[1]->x(), v[1]->y(), v[1]->y(),
+			v[2]->x(), v[2]->y(), v[2]->y(), n);
   }
   int getTypeForMSH(){ return TRI2; }
   char *getStringForPOS(){ return "ST2"; }
diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
index cca779a7223736d76682a4e1cbef608d607574dc..52782bc300f595bb42a3ef8862b37a1081a66b2b 100644
--- a/Graphics/Draw.cpp
+++ b/Graphics/Draw.cpp
@@ -1,4 +1,4 @@
-// $Id: Draw.cpp,v 1.100 2006-08-08 04:35:23 geuzaine Exp $
+// $Id: Draw.cpp,v 1.101 2006-08-11 18:48:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -35,10 +35,10 @@ extern GModel *GMODEL;
 
 int NeedPolygonOffset()
 {
-  if(GMODEL->meshStatus() == 2 &&
+  if(GMODEL->getMeshStatus() == 2 &&
      (CTX.mesh.surfaces_edges || CTX.geom.lines || CTX.geom.surfaces))
     return 1;
-  if(GMODEL->meshStatus() == 3 && 
+  if(GMODEL->getMeshStatus() == 3 && 
      (CTX.mesh.surfaces_edges || CTX.mesh.volumes_edges))
     return 1;
   for(int i = 0; i < List_Nbr(CTX.post.list); i++){
diff --git a/Graphics/gl2ps.cpp b/Graphics/gl2ps.cpp
index 30eeb6009f162a8b7b00e7a5c64912b02855894e..89fa20ddcaf4e686135e1468386a9bee5e435ccc 100644
--- a/Graphics/gl2ps.cpp
+++ b/Graphics/gl2ps.cpp
@@ -1,4 +1,4 @@
-/* $Id: gl2ps.cpp,v 1.108 2006-08-04 14:28:02 geuzaine Exp $ */
+/* $Id: gl2ps.cpp,v 1.109 2006-08-11 18:48:39 geuzaine Exp $ */
 /*
  * GL2PS, an OpenGL to PostScript Printing Library
  * Copyright (C) 1999-2006 Christophe Geuzaine <geuz@geuz.org>
@@ -662,7 +662,7 @@ static void gl2psListEncodeBase64(GL2PSlist *list)
     len = 0;
     for(i = 0; i < 3; i++) {
       if(index < n){
-	in[i] = buffer[index];
+        in[i] = buffer[index];
         len++;
       }
       else{
@@ -2663,8 +2663,8 @@ static void gl2psPrintPostScriptHeader(void)
               "%%%%DocumentData: Clean7Bit\n"
               "%%%%Pages: 1\n",
               gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION, 
-	      GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
-	      gl2ps->producer, ctime(&now));
+              GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+              gl2ps->producer, ctime(&now));
 
   if(gl2ps->format == GL2PS_PS){
     gl2psPrintf("%%%%Orientation: %s\n"
@@ -2741,7 +2741,7 @@ static void gl2psPrintPostScriptHeader(void)
               "/STRR{ gsave FCT moveto rotate SW neg SH neg rmoveto show grestore } BD\n");
 
   gl2psPrintf("/P  { newpath 0.0 360.0 arc closepath fill } BD\n"
-              "/LS { moveto } BD\n"
+              "/LS { newpath moveto } BD\n"
               "/L  { lineto } BD\n"
               "/LE { lineto stroke } BD\n"
               "/T  { newpath moveto lineto lineto closepath fill } BD\n");
@@ -3125,7 +3125,7 @@ static void gl2psPrintPostScriptBeginViewport(GLint viewport[4])
 
   gl2psPrintf("gsave\n"
               "1.0 1.0 scale\n");
-          
+
   if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
     if(gl2ps->colormode == GL_RGBA || gl2ps->colorsize == 0){
       glGetFloatv(GL_COLOR_CLEAR_VALUE, rgba);
@@ -3143,10 +3143,11 @@ static void gl2psPrintPostScriptBeginViewport(GLint viewport[4])
                 rgba[0], rgba[1], rgba[2], 
                 x, y, x+w, y, x+w, y+h, x, y+h);
   }
-  
+    
   gl2psPrintf("newpath %d %d moveto %d %d lineto %d %d lineto %d %d lineto\n"
               "closepath clip\n",
               x, y, x+w, y, x+w, y+h, x, y+h);
+  
 }
 
 static GLint gl2psPrintPostScriptEndViewport(void)
@@ -3217,13 +3218,13 @@ static void gl2psPrintTeXHeader(void)
   time(&now);
 
   fprintf(gl2ps->stream, 
-	  "%% Title: %s\n"
-	  "%% Creator: GL2PS %d.%d.%d%s, %s\n"
-	  "%% For: %s\n"
-	  "%% CreationDate: %s",
-	  gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
-	  GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
-	  gl2ps->producer, ctime(&now));
+          "%% Title: %s\n"
+          "%% Creator: GL2PS %d.%d.%d%s, %s\n"
+          "%% For: %s\n"
+          "%% CreationDate: %s",
+          gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
+          GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+          gl2ps->producer, ctime(&now));
 
   fprintf(gl2ps->stream, 
           "\\setlength{\\unitlength}{1pt}\n"
@@ -5199,13 +5200,13 @@ static void gl2psPrintPGFHeader(void)
   time(&now);
 
   fprintf(gl2ps->stream, 
-	  "%% Title: %s\n"
-	  "%% Creator: GL2PS %d.%d.%d%s, %s\n"
-	  "%% For: %s\n"
-	  "%% CreationDate: %s",
-	  gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
-	  GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
-	  gl2ps->producer, ctime(&now));
+          "%% Title: %s\n"
+          "%% Creator: GL2PS %d.%d.%d%s, %s\n"
+          "%% For: %s\n"
+          "%% CreationDate: %s",
+          gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
+          GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+          gl2ps->producer, ctime(&now));
 
   fprintf(gl2ps->stream, "\\begin{pgfpicture}\n");
   if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
diff --git a/Graphics/gl2ps.h b/Graphics/gl2ps.h
index 349c7d402401a08fb2bf87a9569e4b4c645421f3..a449ddf9142b664085d41bca9e7440393f41e739 100644
--- a/Graphics/gl2ps.h
+++ b/Graphics/gl2ps.h
@@ -1,4 +1,4 @@
-/* $Id: gl2ps.h,v 1.67 2006-08-04 14:28:02 geuzaine Exp $ */
+/* $Id: gl2ps.h,v 1.68 2006-08-11 18:48:39 geuzaine Exp $ */
 /*
  * GL2PS, an OpenGL to PostScript Printing Library
  * Copyright (C) 1999-2006 Christophe Geuzaine <geuz@geuz.org>
@@ -78,7 +78,7 @@
 
 #define GL2PS_MAJOR_VERSION 1
 #define GL2PS_MINOR_VERSION 3
-#define GL2PS_PATCH_VERSION 0
+#define GL2PS_PATCH_VERSION 1
 #define GL2PS_EXTRA_VERSION "-cvs"
 
 #define GL2PS_VERSION (GL2PS_MAJOR_VERSION + \
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 218dc6ed8bbea5112fb4483980832d5fc75234f6..ec971fbf7319e85a64499fc78b8bb48d1cca543c 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.90 2006-08-08 10:37:11 geuzaine Exp $
+// $Id: Generator.cpp,v 1.91 2006-08-11 18:48:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -482,7 +482,7 @@ void mai3d(int ask)
     return;
   }
 
-  int old = GMODEL->meshStatus();
+  int old = GMODEL->getMeshStatus();
 
   // Re-read data
   if((ask > old && ask >= 0 && old < 0) || (ask < old))
@@ -497,7 +497,7 @@ void mai3d(int ask)
   // 1D mesh
   if((ask > old && ask > 0 && old < 1) || (ask < old && ask > 0)) {
     Msg(STATUS1, "Mesh 1D...");
-    if(GMODEL->meshStatus() > 1){
+    if(GMODEL->getMeshStatus() > 1){
       OpenProblem(CTX.filename);
     }
     Maillage_Dimension_1();
@@ -507,7 +507,7 @@ void mai3d(int ask)
   // 2D mesh
   if((ask > old && ask > 1 && old < 2) || (ask < old && ask > 1)) {
     Msg(STATUS1, "Mesh 2D...");
-    if(GMODEL->meshStatus() > 2) {
+    if(GMODEL->getMeshStatus() > 2) {
       OpenProblem(CTX.filename);
       Maillage_Dimension_1();
     }
@@ -523,15 +523,15 @@ void mai3d(int ask)
   }
 
   // Optimize quality
-  if(GMODEL->meshStatus() == 3 && CTX.mesh.optimize)
+  if(GMODEL->getMeshStatus() == 3 && CTX.mesh.optimize)
     Optimize_Netgen();
 
   // Create second order elements
-  if(GMODEL->meshStatus() && CTX.mesh.order == 2)
-    Degre2(GMODEL->meshStatus());
+  if(GMODEL->getMeshStatus() && CTX.mesh.order == 2)
+    Degre2(GMODEL->getMeshStatus());
 
   // Partition
-  if(GMODEL->meshStatus() > 1 && CTX.mesh.nbPartitions != 1)
+  if(GMODEL->getMeshStatus() > 1 && CTX.mesh.nbPartitions != 1)
     PartitionMesh(THEM, CTX.mesh.nbPartitions);
 
   CTX.threads_lock = 0;
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index 6b0784a9b1d3f2d234b422cd3d6cd0f9a0f9c16b..3ba6d242260ca73a445a38c160cb40b3f6c7d462 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.104 2006-08-08 01:10:05 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.105 2006-08-11 18:48:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -144,7 +144,7 @@ void SetBoundingBox(void)
   SBoundingBox3d bb;
 
   if(GMODEL)
-    bb = GMODEL->bounds();
+    bb = GMODEL->getBounds();
 
   if(bb.empty() && GMODEL)
     bb = GMODEL->recomputeBounds();