diff --git a/Common/Visibility.cpp b/Common/Visibility.cpp
index 5f571cb3161711ed3f638400c1bbf441779396d7..b05520528ab9aaad254737953f10acda59bd5f8d 100644
--- a/Common/Visibility.cpp
+++ b/Common/Visibility.cpp
@@ -1,4 +1,4 @@
-// $Id: Visibility.cpp,v 1.14 2006-08-12 16:16:27 geuzaine Exp $
+// $Id: Visibility.cpp,v 1.15 2006-08-12 16:30:12 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -120,19 +120,19 @@ std::string VisibilityManager::getBrowserLine(int n)
   return std::string(str);
 }
 
-void VisElementary::setVisibility(bool val, bool recursive)
+void VisElementary::setVisibility(char val, bool recursive)
 {
   _e->setVisibility(val, recursive);
 }
 
-void VisPhysical::setVisibility(bool val, bool recursive)
+void VisPhysical::setVisibility(char val, bool recursive)
 {
   _visible = val;
   for(unsigned int i = 0; i < _list.size(); i++)
     _list[i]->setVisibility(val, recursive);
 }
 
-void VisPartition::setVisibility(bool val, bool recursive)
+void VisPartition::setVisibility(char val, bool recursive)
 {
   _visible = val;
   for(GModel::eiter it = GMODEL->firstEdge(); it != GMODEL->lastEdge(); it++){
diff --git a/Common/Visibility.h b/Common/Visibility.h
index 9039fa0903cd72294b430abd3b693e36f12d4ec3..0cb2d4372aa5203662ad4c7ac31cc8051608d955 100644
--- a/Common/Visibility.h
+++ b/Common/Visibility.h
@@ -36,8 +36,8 @@ class Vis {
   virtual int getTag() const = 0;
   virtual int getDim() const = 0;
   virtual std::string getName() const = 0;
-  virtual bool getVisibility() const = 0;
-  virtual void setVisibility(bool val, bool recursive=false) = 0;
+  virtual char getVisibility() const = 0;
+  virtual void setVisibility(char val, bool recursive=false) = 0;
 };
 
 class VisElementary : public Vis {
@@ -59,14 +59,14 @@ class VisElementary : public Vis {
     else if(_dim == 2) return "Surface";
     else return "Volume";
   }
-  bool getVisibility() const { return _e->getVisibility(); }
-  void setVisibility(bool val, bool recursive=false);
+  char getVisibility() const { return _e->getVisibility(); }
+  void setVisibility(char val, bool recursive=false);
 };
 
 class VisPhysical : public Vis {
  private:
   int _tag, _dim;
-  bool _visible;
+  char _visible;
   std::vector<GEntity*> _list;
  public:
   VisPhysical(int tag, int dim, std::vector<GEntity*> list) 
@@ -81,22 +81,22 @@ class VisPhysical : public Vis {
     else if(_dim == 2) return "Surface";
     else return "Volume";
   }
-  bool getVisibility() const { return _visible; }
-  void setVisibility(bool val, bool recursive=false);
+  char getVisibility() const { return _visible; }
+  void setVisibility(char val, bool recursive=false);
 };
 
 class VisPartition : public Vis {
  private:
   int _tag;
-  bool _visible;
+  char _visible;
  public:
   VisPartition(int tag) : _tag(tag), _visible(true) {}
   ~VisPartition(){}
   int getTag() const { return _tag; }
   int getDim() const { return -1; }
   std::string getName() const { return "Partition"; }
-  bool getVisibility() const { return _visible; }
-  void setVisibility(bool val, bool recursive=false);
+  char getVisibility() const { return _visible; }
+  void setVisibility(char val, bool recursive=false);
 };
 
 // Singleton, one visibility manager for the whole interface
@@ -123,10 +123,10 @@ class VisibilityManager {
   int getNumEntities() { return _entities.size(); }
 
   // get the visibility information for the nth entity in the manager
-  bool getVisibility(int n){ return _entities[n]->getVisibility(); }
+  char getVisibility(int n){ return _entities[n]->getVisibility(); }
 
   // set the visibility information for the nth entity in the manager
-  void setVisibility(bool n, int val, bool recursive=false)
+  void setVisibility(char n, int val, bool recursive=false)
   { 
     _entities[n]->setVisibility(val, recursive);
   }
diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index 2d95e415bf0df536ad949407b7b3ce9f493fea79..4d33054285c099663c0b4ad9880b2df8c7e8115f 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -38,7 +38,7 @@ GEdge::~GEdge()
   lines.clear();
 }
 
-void GEdge::setVisibility(bool val, bool recursive)
+void GEdge::setVisibility(char val, bool recursive)
 {
   GEntity::setVisibility(val);
   if(recursive){
diff --git a/Geo/GEdge.h b/Geo/GEdge.h
index 4ae06de5afc263e6d87a0d940bace0b4891afe7c..b6483d8871dbe4e127e5314f0b631a3d33b53840 100644
--- a/Geo/GEdge.h
+++ b/Geo/GEdge.h
@@ -26,7 +26,7 @@ class GEdge : public GEntity {
 
   virtual bool periodic(int dim=0) const = 0;
   virtual bool continuous(int dim=0) const = 0;
-  virtual void setVisibility(bool val, bool recursive=false);
+  virtual void setVisibility(char val, bool recursive=false);
 
   // Get the parameter location for a point in space on the edge.
   virtual double parFromPoint(const SPoint3 &) const = 0;
diff --git a/Geo/GEntity.h b/Geo/GEntity.h
index 0083e20128f6efdca214c59e74a465036fad407b..c7e24e7134728d075835767bcf5f0f8f0db32af8 100644
--- a/Geo/GEntity.h
+++ b/Geo/GEntity.h
@@ -24,8 +24,7 @@ class GEntity {
   GModel *_model;
   int _tag;
   MRep *_geom, *_mesh;
-  bool _visible;
-  char _flag;
+  char _visible, _flag;
 
  public:
 
@@ -132,8 +131,8 @@ class GEntity {
   virtual SBoundingBox3d bounds() const{throw;}
 
   // get/set the visibility flag
-  virtual bool getVisibility(){ return _visible; }
-  virtual void setVisibility(bool val, bool recursive=false){ _visible = val; }
+  virtual char getVisibility(){ return _visible; }
+  virtual void setVisibility(char val, bool recursive=false){ _visible = val; }
 
   // get/set the multi-purpose flag
   virtual char getFlag(){ return _flag; }
diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index cdef67aaf10b3bf37e3fdf8188c4bc47d62748b0..92165dc0c15f95c1e39b29132297c6dd4a098e3d 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -40,7 +40,7 @@ std::list<GVertex*> GFace::vertices() const
   return ret;
 }
 
-void GFace::setVisibility(bool val, bool recursive)
+void GFace::setVisibility(char val, bool recursive)
 {
   GEntity::setVisibility(val);
   if(recursive){
diff --git a/Geo/GFace.h b/Geo/GFace.h
index 14a7dfee3f71270e20f3f14580649c12f80ceb8a..f93c1808a14f07cd92d4082c46f4d90ed0aa957e 100644
--- a/Geo/GFace.h
+++ b/Geo/GFace.h
@@ -41,7 +41,7 @@ class GFace : public GEntity
   virtual std::list<GVertex*> vertices() const;
 
   virtual int dim() const {return 2;}
-  virtual void setVisibility(bool val, bool recursive=false);
+  virtual void setVisibility(char val, bool recursive=false);
 
   // Get the location of any parametric degeneracies on the face in
   // the given parametric direction.
diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp
index 53c6bf4a010249ac6665aa0f3b488199f08b984d..c158bfb100e371b7f2be93fe09812ae2e45e49b3 100644
--- a/Geo/GRegion.cpp
+++ b/Geo/GRegion.cpp
@@ -31,7 +31,7 @@ GRegion::~GRegion ()
   pyramids.clear();
 }
 
-void GRegion::setVisibility(bool val, bool recursive)
+void GRegion::setVisibility(char val, bool recursive)
 {
   GEntity::setVisibility(val);
   if(recursive){
diff --git a/Geo/GRegion.h b/Geo/GRegion.h
index 8e08f96f2955e1d43e344fbc7a8dff44072c53f5..05376a55b0e383cd79fb967b90d3125cd911448d 100644
--- a/Geo/GRegion.h
+++ b/Geo/GRegion.h
@@ -14,7 +14,7 @@ class GRegion : public GEntity {
   virtual ~GRegion();
   virtual int dim() const {return 3;}
   virtual GeomType geomType() const {return Volume;}
-  virtual void setVisibility(bool val, bool recursive=false);
+  virtual void setVisibility(char val, bool recursive=false);
 
   // recompute the mesh partitions defined on this region.
   void recomputeMeshPartitions();
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 41ed1ee512f83fde380bd79758bc0fe4ea48bcb8..c7265e8a8a8469b4c04ea601e321446234ee5777 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -25,7 +25,7 @@ class MElement
  private:
   static int _globalNum;
   int _num, _partition;
-  bool _visible;
+  char _visible;
 
  public :
   MElement(int num=0, int part=0) 
@@ -48,8 +48,8 @@ class MElement
   virtual int getPartition(){ return _partition; }
 
   // get/set the visibility flag
-  virtual bool getVisibility(){ return _visible; }
-  virtual void setVisibility(bool val){ _visible = val; }
+  virtual char getVisibility(){ return _visible; }
+  virtual void setVisibility(char val){ _visible = val; }
 
   // get the vertices
   virtual int getNumVertices() = 0;
diff --git a/Geo/MVertex.h b/Geo/MVertex.h
index ef0c6a144127288449389df59cc617ba0d3c21ae..c1d8efc043fdef7e153022ec9a05910053279799 100644
--- a/Geo/MVertex.h
+++ b/Geo/MVertex.h
@@ -10,7 +10,7 @@ class MVertex{
  private:
   static int _globalNum;
   int _num;
-  bool _visible;
+  char _visible;
   double _x, _y, _z;
   GEntity *_ge;
 
@@ -29,8 +29,8 @@ class MVertex{
   virtual ~MVertex(){}
 
   // get/set the visibility flag
-  virtual bool getVisibility(){ return _visible; }
-  virtual void setVisibility(bool val){ _visible = val; }
+  virtual char getVisibility(){ return _visible; }
+  virtual void setVisibility(char val){ _visible = val; }
   
   // get/set the coordinates
   inline double x() const {return _x;}