[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice
Subject:    Re: Bug#19794: kformula crashes when deleting document contents
From:       Ulrich Kuettler <ulrich.kuettler () mailbox ! tu-dresden ! de>
Date:       2001-02-05 16:40:20
[Download RAW message or body]

On Monday 05 February 2001 17:04, Werner Trobin wrote:
>
> Please send your patches to the list and if they look okay
> we'll commit them, of course. It's a bit difficult for kformula,
> though, because noone can tell if it looks "okay" :)

That's fine with me. :-)

But as I want to do some more work on kformula I would prefer to apply the 
patches myself. (Currently Andrea Rizzi and I are thinking about improving 
the element structure.) I already asked David Faure to get cvs access but he 
seems to be busy.

Uli

["refactoring.patch" (text/plain)]

? work
? ChangeLog
Index: BasicElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/BasicElement.cc,v
retrieving revision 1.23
diff -u -3 -p -r1.23 BasicElement.cc
--- BasicElement.cc	2000/10/19 11:39:21	1.23
+++ BasicElement.cc	2001/02/03 17:13:05
@@ -19,14 +19,14 @@
 BasicElement::BasicElement(KFormulaContainer *Formula,
 			   BasicElement *Prev,
 			   int Relation,
-			   BasicElement *Next,
-			   QString Content)
+			   BasicElement *Next/*,
+                                               QString Content*/)
 {
     formula=Formula;
     prev=Prev;
     relation=Relation;
     next=Next;
-    content=Content;
+    //content=Content;
     if(prev!=NULL)
         {
 	  numericFont=prev->getNumericFont();
@@ -55,7 +55,7 @@ BasicElement::~BasicElement()
 BasicElement *BasicElement::isInside(QPoint point)
 {
     int i;
-    if(myArea.contains(point))
+    if(myArea().contains(point))
         {
 
 	  BasicElement *aValue=0L;
@@ -94,12 +94,12 @@ void BasicElement::draw(QPoint drawPoint
     if( beActive )
       pen->setPen(Qt::red);
     pen->setBrush(Qt::NoBrush);
-    pen->drawRect(x+familySize.x(),y-5,10,10);
+    pen->drawRect(x+familySize().x(),y-5,10,10);
     
-    myArea=globalSize;
-    myArea.moveBy(x,y);
+    setMyArea(globalSize());
+    myArea().moveBy(x,y);
 #ifdef RECT
-    pen->drawRect(myArea);
+    pen->drawRect(myArea());
 #endif
     if(beActive)
       pen->setPen(Qt::blue);
@@ -107,29 +107,29 @@ void BasicElement::draw(QPoint drawPoint
     if(beActive)
       pen->setPen(Qt::black);
     if(next!=0L)
-        next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+        next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
 
 }
 
 void BasicElement::drawIndexes(QPainter *,int resolution)
 {
     //draw point
-    QPoint dp = myArea.topLeft()-globalSize.topLeft();
+    QPoint dp = myArea().topLeft()-globalSize().topLeft();
 
     if(index[0]!=0L)
-	index[0]->draw(dp + familySize.topLeft() -
+	index[0]->draw(dp + familySize().topLeft() -
 		       index[0]->getSize().bottomRight(),
 		       resolution);
     if(index[1]!=0L)
-	index[1]->draw(dp + familySize.bottomLeft() -
+	index[1]->draw(dp + familySize().bottomLeft() -
 		       index[1]->getSize().topRight(),
 		       resolution);
     if(index[2]!=0L)
-	index[2]->draw(dp + familySize.topRight() -
+	index[2]->draw(dp + familySize().topRight() -
 		       index[2]->getSize().bottomLeft(),
 		       resolution);
     if(index[3]!=0L)
-	index[3]->draw(dp + familySize.bottomRight() -
+	index[3]->draw(dp + familySize().bottomRight() -
 		       index[3]->getSize().topLeft(),
 		       resolution);
 }
@@ -145,14 +145,14 @@ void BasicElement::checkSize()
 	next->checkSize();
 	nextDimension=next->getSize();
       }
-    localSize=QRect(0,-5,10,10);
-    familySize=localSize;
-    checkIndexesSize();  //This will change localSize adding Indexes Size
-    familySize.moveBy(-localSize.left(),0);
-    localSize.moveBy(-localSize.left(),0);
-    globalSize=localSize;
-    nextDimension.moveBy(localSize.width(),0);
-    globalSize=globalSize.unite(nextDimension);
+    setLocalSize(QRect(0,-5,10,10));
+    setFamilySize(localSize());
+    checkIndexesSize();  //This will change localSize() adding Indexes Size
+    familySize().moveBy(-localSize().left(),0);
+    localSize().moveBy(-localSize().left(),0);
+    setGlobalSize(localSize());
+    nextDimension.moveBy(localSize().width(),0);
+    setGlobalSize(globalSize().unite(nextDimension));
 
 }
 
@@ -182,31 +182,31 @@ void BasicElement::checkIndexesSize()
     if(index[0]!=0L)
 	{
 	    indexDimension=index[0]->getSize();
-	    vectorT=familySize.topLeft()-indexDimension.bottomRight();
+	    vectorT=familySize().topLeft()-indexDimension.bottomRight();
 	    indexDimension.moveBy(vectorT.x(),vectorT.y());
-	    localSize=localSize.unite(indexDimension);
+	    setLocalSize(localSize().unite(indexDimension));
 	}
     if(index[1]!=0L)
 	{
 	    indexDimension=index[1]->getSize();
-	    vectorT=familySize.bottomLeft()-indexDimension.topRight();
+	    vectorT=familySize().bottomLeft()-indexDimension.topRight();
 	    indexDimension.moveBy(vectorT.x(),vectorT.y());
-	    localSize=localSize.unite(indexDimension);
+	    setLocalSize(localSize().unite(indexDimension));
 	}
 
     if(index[2]!=0L)
 	{
 	    indexDimension=index[2]->getSize();
-	    vectorT=familySize.topRight()-indexDimension.bottomLeft();
+	    vectorT=familySize().topRight()-indexDimension.bottomLeft();
 	    indexDimension.moveBy(vectorT.x(),vectorT.y());
-	    localSize=localSize.unite(indexDimension);
+	    setLocalSize(localSize().unite(indexDimension));
 	}
     if(index[3]!=0L)
 	{
 	    indexDimension=index[3]->getSize();
-	    vectorT=familySize.bottomRight()-indexDimension.topLeft();
+	    vectorT=familySize().bottomRight()-indexDimension.topLeft();
 	    indexDimension.moveBy(vectorT.x(),vectorT.y());
-	    localSize=localSize.unite(indexDimension);
+	    setLocalSize(localSize().unite(indexDimension));
 	}
 }
 
@@ -273,7 +273,7 @@ void BasicElement::setNumericFont(int va
 void  BasicElement::substituteElement(BasicElement *clone)
 {
     int i;
-    clone->setContent(content);
+    clone->setContent(getContent());
     clone->setNext(next);
     clone->setPrev(prev);
     for(i=0;i<4;i++) 
@@ -492,15 +492,15 @@ void BasicElement::makeList(bool active)
 
 QRect BasicElement::getCursor(int atPos) 
 {
-    QPoint dp = myArea.topLeft()-globalSize.topLeft();
+    QPoint dp = myArea().topLeft()-globalSize().topLeft();
     if (typeid(*this) == typeid(BasicElement))
-	return (QRect(dp.x()+familySize.x()+3,dp.y()-8,5,16));	
+	return (QRect(dp.x()+familySize().x()+3,dp.y()-8,5,16));	
     else 
 	{
 	    if(atPos==0)
-		return (QRect(dp.x()+localSize.x(),dp.y()-7,5,14));
+		return (QRect(dp.x()+localSize().x(),dp.y()-7,5,14));
 	    else
-		return (QRect(dp.x()+localSize.right(),dp.y()-8,5,16));	
+		return (QRect(dp.x()+localSize().right(),dp.y()-8,5,16));	
 	}
 
 
Index: BasicElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/BasicElement.h,v
retrieving revision 1.17
diff -u -3 -p -r1.17 BasicElement.h
--- BasicElement.h	2000/10/19 11:39:21	1.17
+++ BasicElement.h	2001/02/03 17:13:06
@@ -42,8 +42,7 @@ class BasicElement
     BasicElement(KFormulaContainer *Formula,
 		 BasicElement *Prev=0,
 		 int Relation=-1,
-		 BasicElement *Next=0,
-		 QString Content="");
+		 BasicElement *Next=0);
   
     /*
      * Link Next & Prev removing itself
@@ -126,7 +125,7 @@ class BasicElement
     /*
      * Return globalsize (see globalSize)
      */
-    QRect getSize() const { return globalSize; }
+    QRect getSize() const { return _globalSize; }
 
     /*
      * Return next
@@ -151,13 +150,18 @@ class BasicElement
      * Return the default color of element
      */ 
     QColor *getColor() const { return defaultColor; }
-  
-    QString getContent() const {return content;}  
+
+    // I want these to disappear.
+    // They are overridden in every subtype. Each time with
+    // completly different meaning.
+    // There should be seperate methodes instead.
+    virtual QString getContent() const {return "";}  
+    virtual void setContent(QString) {}  
+    virtual QString getContent() { return "";}
+
     /*
      * Various Set-GetFunction
      */  
-    void setContent(QString a) {content=a.copy();}  
-    QString getContent() { return content;}
     void setIndex(BasicElement *e,int i) {index[i]=e; }    
     void setChild(BasicElement *e,int i) {child[i]=e; }
     void setColor(QColor *c) {defaultColor=c; }       
@@ -200,7 +204,9 @@ class BasicElement
      * I know nothing about the future of this member
      */
     KFormulaContainer *formula;
-  
+
+    // This one is bad. Prev is better off doing one thing only.
+    // The index and child relationship will need another connection.
     /*
      * realtionship with prev
      * -1=I'm its Next
@@ -215,6 +221,7 @@ class BasicElement
     BasicElement *next;
     BasicElement *prev;
 
+    // Indexes should be handled by a separete class I think.
     /*
      * Index printed near the corners of element 
      * Those aren't integral or Sum limits 
@@ -222,7 +229,9 @@ class BasicElement
      * 0=left_up,1=left_down,2=right_up,3=right_down
      */
     BasicElement  *index[4]; 
-  
+
+    // It should be up to derived classes to have children.
+    // So this attribute is going to disappear.
     /*
      * each dervied class could add children 
      * Sum,integral,matrix,fraction,root,delimiter,decoration need children
@@ -245,30 +254,65 @@ class BasicElement
     /*
      * real data: text,symbol code,delimiter code,matrix rows&cols
      */
-    QString content;    
+    // This has different meaning for different subtypes.
+    // So it should be defined there.
+    //QString content;
   
+private:
+
+    // I don't think all those are needed.
+    
     /*
      * Size of (family+next) & next elements
      */
-    QRect globalSize;   //y=0  base line
+    QRect _globalSize;   //y=0  base line
   
     /*
      * Size of family & indexes
      * This name isn't very good.I'm sorry.
      */
-    QRect localSize;   
+    QRect _localSize;
   
     /*
      * Size of Family:father & children  (without indexes )
      */
-    QRect familySize;
+    QRect _familySize;
+
+    /*
+     * Area where I am painted (last time)
+     * localSize+drawPoint
+     */
+    QRect _myArea;
+
+protected:
+
+    /*
+     * Size of (family+next) & next elements
+     */
+    QRect& globalSize() { return _globalSize; }
+    void setGlobalSize(QRect globalSize) { _globalSize = globalSize; }
   
     /*
+     * Size of family & indexes
+     * This name isn't very good.I'm sorry.
+     */
+    QRect& localSize() { return _localSize; }
+    void setLocalSize(QRect localSize) { _localSize = localSize; }
+    
+    /*
+     * Size of Family:father & children  (without indexes )
+     */
+    QRect& familySize() { return _familySize; }
+    void setFamilySize(QRect familySize) { _familySize = familySize; }
+    
+    /*
      * Area where I am painted (last time)
      * localSize+drawPoint
      */
-    QRect myArea;    
+    QRect& myArea() { return _myArea; }
+    void setMyArea(QRect area) { _myArea = area; }
 
+    
     /*
      * Font
      *
Index: BracketElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/BracketElement.cc,v
retrieving revision 1.16
diff -u -3 -p -r1.16 BracketElement.cc
--- BracketElement.cc	2000/10/19 11:39:21	1.16
+++ BracketElement.cc	2001/02/03 17:13:06
@@ -21,7 +21,8 @@ BracketElement::BracketElement(KFormulaC
 			       BasicElement *Prev,
 			       int Relation,
 			       BasicElement *Next,
-			       QString Content) : BasicElement(Formula,Prev,Relation,Next,Content)
+			       QString Content)
+    : BasicElement(Formula,Prev,Relation,Next), content(Content)
 {
   /*
     Stuff to load pixmap (if need)
@@ -47,8 +48,8 @@ void BracketElement::draw(QPoint drawPoi
 
   if( beActive )
     pen->setPen(Qt::red);
-  // familySize IS A QRECT
-  int unit=familySize.height()/4;
+  // familySize() IS A QRECT
+  int unit=familySize().height()/4;
   /*
     Draw Bracket!!
   */
@@ -60,9 +61,9 @@ void BracketElement::draw(QPoint drawPoi
   x+=1;
   for(int i=0;i<2;i++)
     {
-      ch=QChar(content[i]);
+      ch=QChar(getContent()[i]);
       if(i)
-	x+=familySize.width()-unit-ofs-3;
+	x+=familySize().width()-unit-ofs-3;
 
       switch (ch)
 	{
@@ -72,10 +73,10 @@ void BracketElement::draw(QPoint drawPoi
 	  */
 	  {
 	  QPointArray points(5);
-	  points.setPoint(1,x+familySize.x()+unit/2,y+familySize.y());
-	  points.setPoint(2,x+familySize.x()+unit/2+ofs,y+familySize.y());
-	  points.setPoint(3,x+familySize.x()+unit/2+ofs,y+familySize.bottom());
-	  points.setPoint(4,x+familySize.x()+unit/2,y+familySize.bottom());
+	  points.setPoint(1,x+familySize().x()+unit/2,y+familySize().y());
+	  points.setPoint(2,x+familySize().x()+unit/2+ofs,y+familySize().y());
+	  points.setPoint(3,x+familySize().x()+unit/2+ofs,y+familySize().bottom());
+	  points.setPoint(4,x+familySize().x()+unit/2,y+familySize().bottom());
 	  pen->setBrush(pen->pen().color());
 	  pen->drawPolygon(points,FALSE,1,4);
 	  }
@@ -86,16 +87,16 @@ void BracketElement::draw(QPoint drawPoi
                  case '?':
 	  {
 	  QPointArray points(5);
-	  points.setPoint(1,x+familySize.x()+unit/4,y+familySize.y());
-	  points.setPoint(2,x+familySize.x()+unit/4+ofs,y+familySize.y());
-	  points.setPoint(3,x+familySize.x()+unit/4+ofs,y+familySize.bottom());
-	  points.setPoint(4,x+familySize.x()+unit/4,y+familySize.bottom());
+	  points.setPoint(1,x+familySize().x()+unit/4,y+familySize().y());
+	  points.setPoint(2,x+familySize().x()+unit/4+ofs,y+familySize().y());
+	  points.setPoint(3,x+familySize().x()+unit/4+ofs,y+familySize().bottom());
+	  points.setPoint(4,x+familySize().x()+unit/4,y+familySize().bottom());
                 pen->setBrush(pen->pen().color());
 	  pen->drawPolyline(points,1,4);
-                        \
                points.setPoint(1,x+familySize.x()+unit*3/4,y+familySize.y());
-	  points.setPoint(2,x+familySize.x()+unit*3/4+ofs,y+familySize.y());
-	  points.setPoint(3,x+familySize.x()+unit*3/4+ofs,y+familySize.bottom());
-	  points.setPoint(4,x+familySize.x()+unit*3/4,y+familySize.bottom());
+                        \
points.setPoint(1,x+familySize().x()+unit*3/4,y+familySize().y()); +	  \
points.setPoint(2,x+familySize().x()+unit*3/4+ofs,y+familySize().y()); +	  \
points.setPoint(3,x+familySize().x()+unit*3/4+ofs,y+familySize().bottom()); +	  \
points.setPoint(4,x+familySize().x()+unit*3/4,y+familySize().bottom());  \
pen->setBrush(pen->pen().color());  pen->drawPolyline(points,1,4);
 	  }
@@ -112,10 +113,10 @@ void BracketElement::draw(QPoint drawPoi
 	case '\\':
 	  {
 	    QPointArray points(5);
-	    points.setPoint(1,x+familySize.x(),y+familySize.y());
-	    points.setPoint(2,x+familySize.x()+ofs,y+familySize.y());
-	    points.setPoint(3,x+familySize.x()+unit+ofs,y+familySize.bottom());
-	    points.setPoint(4,x+familySize.x()+unit,y+familySize.bottom());
+	    points.setPoint(1,x+familySize().x(),y+familySize().y());
+	    points.setPoint(2,x+familySize().x()+ofs,y+familySize().y());
+	    points.setPoint(3,x+familySize().x()+unit+ofs,y+familySize().bottom());
+	    points.setPoint(4,x+familySize().x()+unit,y+familySize().bottom());
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,1,4);
 	  }
@@ -123,10 +124,10 @@ void BracketElement::draw(QPoint drawPoi
 	case '/':
 	  {
 	    QPointArray points(5);
-	    points.setPoint(1,x+familySize.x()+unit,y+familySize.y());
-	    points.setPoint(2,x+familySize.x()+unit+ofs,y+familySize.y());
-	    points.setPoint(3,x+familySize.x()+ofs,y+familySize.bottom());
-	    points.setPoint(4,x+familySize.x(),y+familySize.bottom());
+	    points.setPoint(1,x+familySize().x()+unit,y+familySize().y());
+	    points.setPoint(2,x+familySize().x()+unit+ofs,y+familySize().y());
+	    points.setPoint(3,x+familySize().x()+ofs,y+familySize().bottom());
+	    points.setPoint(4,x+familySize().x(),y+familySize().bottom());
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,1,4);
 	  }
@@ -134,14 +135,14 @@ void BracketElement::draw(QPoint drawPoi
 	case '[':
 	  {
 	    QPointArray points(10);
-	    points.setPoint(1,x+familySize.x(),y+familySize.y());
-	    points.setPoint(2,x+familySize.x()-1+unit+ofs,y+familySize.y());
-	    points.setPoint(3,x+familySize.x()-1+unit+ofs,y+familySize.y()+ofs);
-	    points.setPoint(4,x+familySize.x()+ofs,y+familySize.y()+ofs);
-	    points.setPoint(5,x+familySize.x()+ofs,y+familySize.bottom()-ofs);
-	    points.setPoint(6,x+familySize.x()-1+unit+ofs,y+familySize.bottom()-ofs);
-	    points.setPoint(7,x+familySize.x()-1+unit+ofs,y+familySize.bottom());
-	    points.setPoint(8,x+familySize.x(),y+familySize.bottom());
+	    points.setPoint(1,x+familySize().x(),y+familySize().y());
+	    points.setPoint(2,x+familySize().x()-1+unit+ofs,y+familySize().y());
+	    points.setPoint(3,x+familySize().x()-1+unit+ofs,y+familySize().y()+ofs);
+	    points.setPoint(4,x+familySize().x()+ofs,y+familySize().y()+ofs);
+	    points.setPoint(5,x+familySize().x()+ofs,y+familySize().bottom()-ofs);
+	    points.setPoint(6,x+familySize().x()-1+unit+ofs,y+familySize().bottom()-ofs);
+	    points.setPoint(7,x+familySize().x()-1+unit+ofs,y+familySize().bottom());
+	    points.setPoint(8,x+familySize().x(),y+familySize().bottom());
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,1,8);
 	  }
@@ -149,14 +150,14 @@ void BracketElement::draw(QPoint drawPoi
 	case ']':
 	  {
 	    QPointArray points(10);
-	    points.setPoint(1,x+familySize.x(),y+familySize.y());
-	    points.setPoint(2,x+familySize.x()-1+unit+ofs,y+familySize.y());
-	    points.setPoint(3,x+familySize.x()-1+unit+ofs,y+familySize.bottom());
-	    points.setPoint(4,x+familySize.x(),y+familySize.bottom());
-	    points.setPoint(5,x+familySize.x(),y+familySize.bottom()-ofs);
-	    points.setPoint(6,x+familySize.x()-1+unit,y+familySize.bottom()-ofs);
-	    points.setPoint(7,x+familySize.x()-1+unit,y+familySize.y()+ofs);
-	    points.setPoint(8,x+familySize.x(),y+familySize.y()+ofs);
+	    points.setPoint(1,x+familySize().x(),y+familySize().y());
+	    points.setPoint(2,x+familySize().x()-1+unit+ofs,y+familySize().y());
+	    points.setPoint(3,x+familySize().x()-1+unit+ofs,y+familySize().bottom());
+	    points.setPoint(4,x+familySize().x(),y+familySize().bottom());
+	    points.setPoint(5,x+familySize().x(),y+familySize().bottom()-ofs);
+	    points.setPoint(6,x+familySize().x()-1+unit,y+familySize().bottom()-ofs);
+	    points.setPoint(7,x+familySize().x()-1+unit,y+familySize().y()+ofs);
+	    points.setPoint(8,x+familySize().x(),y+familySize().y()+ofs);
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,1,8);
 	  }
@@ -166,16 +167,16 @@ void BracketElement::draw(QPoint drawPoi
 	    QColor elementColor(pen->pen().color());
 	    pen->setBrush(elementColor);
 	    pen->setPen(QPen(elementColor,ofs));
-	    pen->drawArc(x+familySize.x(),y+familySize.y(),
-			 unit+ofs,familySize.height(),
+	    pen->drawArc(x+familySize().x(),y+familySize().y(),
+			 unit+ofs,familySize().height(),
 			 90*16,180*16);
-	    /* pen->drawChord(x+familySize.x(),y+familySize.y(),
-	       unit+ofs,familySize.height(),
+	    /* pen->drawChord(x+familySize().x(),y+familySize().y(),
+	       unit+ofs,familySize().height(),
 	       90*16,180*16);
 	       pen->setBrush(pen->backgroundColor());
 	       pen->setPen(pen->backgroundColor());
-	       pen->drawChord(x+familySize.x()+ofs+1,y+familySize.y(),
-	       unit,familySize.height(),
+	       pen->drawChord(x+familySize().x()+ofs+1,y+familySize().y(),
+	       unit,familySize().height(),
 	       90*16,180*16);
 	    */
 
@@ -189,13 +190,13 @@ void BracketElement::draw(QPoint drawPoi
 	    pen->setBrush(elementColor);
 	    pen->setPen(QPen(elementColor,ofs));
 	    
-	    pen->drawArc(x+familySize.x(),y+familySize.y(),
-			 unit+ofs,familySize.height(),
+	    pen->drawArc(x+familySize().x(),y+familySize().y(),
+			 unit+ofs,familySize().height(),
 			 270*16,180*16);
 	    /*      pen->setBrush(pen->backgroundColor());
 		    pen->setPen(pen->backgroundColor());
-		    pen->drawChord(x+familySize.x()-1,y+familySize.y(),
-		    unit,familySize.height(),
+		    pen->drawChord(x+familySize().x()-1,y+familySize().y(),
+		    unit,familySize().height(),
 		    270*16,180*16);
 	    */
 	    pen->setPen(elementColor);
@@ -205,10 +206,10 @@ void BracketElement::draw(QPoint drawPoi
 	case '<':
 	  {
 	    QPointArray points(5);
-	    points.setPoint(1,x+familySize.x()+unit,y+familySize.y());
-	    points.setPoint(2,x+familySize.x(),y+familySize.y()+ \
                (y+familySize.bottom()-(y+familySize.y()))/2);
-	    points.setPoint(3,x+familySize.x()+unit,y+familySize.bottom());
-	    //points.setPoint(4,x+familySize.x(),y+familySize.bottom());
+	    points.setPoint(1,x+familySize().x()+unit,y+familySize().y());
+	    points.setPoint(2,x+familySize().x(),y+familySize().y()+ \
(y+familySize().bottom()-(y+familySize().y()))/2); +	    \
points.setPoint(3,x+familySize().x()+unit,y+familySize().bottom()); +	    \
//points.setPoint(4,x+familySize().x(),y+familySize().bottom());  \
pen->setBrush(pen->pen().color());  pen->drawPolyline(points,1,/*4*/3);
 	  }
@@ -216,10 +217,10 @@ void BracketElement::draw(QPoint drawPoi
 	case '>':
 	  {
 	    QPointArray points(5);
-	    points.setPoint(1,x+familySize.x(),y+familySize.y());
-	    points.setPoint(2,x+familySize.x()+unit,y+familySize.y()+ \
                (y+familySize.bottom()-(y+familySize.y()))/2);
-	    points.setPoint(3,x+familySize.x(),y+familySize.bottom());
-	    //points.setPoint(4,x+familySize.x(),y+familySize.bottom());
+	    points.setPoint(1,x+familySize().x(),y+familySize().y());
+	    points.setPoint(2,x+familySize().x()+unit,y+familySize().y()+ \
(y+familySize().bottom()-(y+familySize().y()))/2); +	    \
points.setPoint(3,x+familySize().x(),y+familySize().bottom()); +	    \
//points.setPoint(4,x+familySize().x(),y+familySize().bottom());  \
pen->setBrush(pen->pen().color());  pen->drawPolyline(points,1,/*4*/3);
 
@@ -236,16 +237,16 @@ void BracketElement::draw(QPoint drawPoi
 
   if( beActive )
     pen->setPen(Qt::blue);
-  child[0]->draw(QPoint(x+familySize.x()+unit+ofs+3,y),resolution);
-  myArea=globalSize;;
-  myArea.moveBy(x,y);
+  child[0]->draw(QPoint(x+familySize().x()+unit+ofs+3,y),resolution);
+  setMyArea(globalSize());
+  myArea().moveBy(x,y);
   // globalArea=
   // globalArea.moveBy(x,y);
 #ifdef RECT
   pen->setBrush(Qt::green);
   pen->setBrush(Qt::NoBrush);
-  pen->drawRect(myArea);
-  QRect area(localSize);
+  pen->drawRect(myArea());
+  QRect area(localSize());
   area.moveBy(x,y);
   pen->drawRect(area);
   pen->setBrush(Qt::SolidPattern);
@@ -254,7 +255,7 @@ void BracketElement::draw(QPoint drawPoi
   if( beActive )
     pen->setPen(/*Qt::black*/QApplication::palette().active().text());
   if(next!=0L)
-    next->draw(drawPoint+QPoint(localSize.width()+1,0),resolution);
+    next->draw(drawPoint+QPoint(localSize().width()+1,0),resolution);
 
 
 }
@@ -271,25 +272,25 @@ void BracketElement::checkSize()
     }
 
   child[0]->checkSize();
-  familySize=child[0]->getSize();
+  setFamilySize(child[0]->getSize());
   
-  if (familySize.height()<18)
+  if (familySize().height()<18)
     {
-      int fmY=familySize.height();
-      familySize.setTop(familySize.top()-(16-fmY)/2-1);
-      familySize.setBottom(familySize.bottom()+(16-fmY)/2+1);
+      int fmY=familySize().height();
+      familySize().setTop(familySize().top()-(16-fmY)/2-1);
+      familySize().setBottom(familySize().bottom()+(16-fmY)/2+1);
     }
-  familySize.setLeft(familySize.left()-(numericFont/24)-(familySize.height()/4)-2);
-  familySize.setRight(familySize.right()+(numericFont/24)+(familySize.height()/4)+2);
 +  familySize().setLeft(familySize().left()-(numericFont/24)-(familySize().height()/4)-2);
 +  familySize().setRight(familySize().right()+(numericFont/24)+(familySize().height()/4)+2);
  
 
-  localSize=familySize;
-  checkIndexesSize();  //This will change localSize adding Indexes Size
-  familySize.moveBy(-localSize.left(),0);
-  localSize.moveBy(-localSize.left(),0);
-  globalSize=localSize;
-  nextDimension.moveBy(localSize.width(),0);
-  globalSize=globalSize.unite(nextDimension);
+  setLocalSize(familySize());
+  checkIndexesSize();  //This will change localSize() adding Indexes Size
+  familySize().moveBy(-localSize().left(),0);
+  localSize().moveBy(-localSize().left(),0);
+  setGlobalSize(localSize());
+  nextDimension.moveBy(localSize().width(),0);
+  setGlobalSize(globalSize().unite(nextDimension));
   //warning("end");
 }
 
Index: BracketElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/BracketElement.h,v
retrieving revision 1.10
diff -u -3 -p -r1.10 BracketElement.h
--- BracketElement.h	2000/10/19 11:39:21	1.10
+++ BracketElement.h	2001/02/03 17:13:06
@@ -75,7 +75,13 @@ class BracketElement : public BasicEleme
     /*   virtual void save(int file);
 	 virtual void load(int file);
     */
- protected:
+    
+    QString getContent() const {return content;}  
+    void setContent(QString a) {content=a.copy();}  
+    QString getContent() { return content;}
+
+//protected:
+private:
    
     /*
      * If usePixmap is True we need a...
@@ -84,7 +90,7 @@ class BracketElement : public BasicEleme
   
     bool usePixmap;
   
-     
+    QString content;
    
 };
 
Index: DecorationElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/DecorationElement.cc,v
retrieving revision 1.2
diff -u -3 -p -r1.2 DecorationElement.cc
--- DecorationElement.cc	1999/04/16 20:05:07	1.2
+++ DecorationElement.cc	2001/02/03 17:13:10
@@ -18,7 +18,7 @@ DecorationElement::DecorationElement(KFo
 			 int Relation,
 			 BasicElement *Next,
 			 QString Content) : 
-    BasicElement(Formula,Prev,Relation,Next,Content)
+    BasicElement(Formula,Prev,Relation,Next), content(Content)
 {
     /*
       Stuff to load pixmap (if need)
@@ -37,12 +37,12 @@ void DecorationElement::draw(QPoint draw
   
     QPainter *pen=formula->painter();
     //QRect globalArea;
-    int x,y,unit; //unit is familySize.height/4,used to draw proportional roots
+    int x,y,unit; //unit is familySize().height/4,used to draw proportional roots
     x=drawPoint.x();
     y=drawPoint.y();
     if( beActive )
 	pen->setPen(red);
-    unit=familySize.height()/4;
+    unit=familySize().height()/4;
   
     /*  
 	Draw root!!
@@ -55,25 +55,25 @@ void DecorationElement::draw(QPoint draw
     /*
       //  int ofs;
       for(ofs=0;ofs<rootFont+1;ofs++){
-      pen->drawLine(x+familySize.x()+ofs,y+familySize.y()+unit+1,
-      x+familySize.x()+unit+ofs,y+familySize.bottom()+3+ofs);//familySize.y is < 0
-      pen->drawLine(x+familySize.x()+unit+ofs,y+familySize.y()+3+ofs,
-      x+familySize.x()+unit+ofs,y+familySize.bottom()+ofs);
-      pen->drawLine(x+familySize.x()+unit+ofs,y+familySize.y()+3+ofs,
-      x+familySize.right()+rootFont+1,y+familySize.y()+3+ofs);
+      pen->drawLine(x+familySize().x()+ofs,y+familySize().y()+unit+1,
+      x+familySize().x()+unit+ofs,y+familySize().bottom()+3+ofs);//familySize().y is \
< 0 +      pen->drawLine(x+familySize().x()+unit+ofs,y+familySize().y()+3+ofs,
+      x+familySize().x()+unit+ofs,y+familySize().bottom()+ofs);
+      pen->drawLine(x+familySize().x()+unit+ofs,y+familySize().y()+3+ofs,
+      x+familySize().right()+rootFont+1,y+familySize().y()+3+ofs);
       }*/
     warning("Array");
     QPointArray points(10);
-    points.setPoint(1,x+familySize.x(),y+familySize.y()+unit);
-    points.setPoint(2,x+familySize.x()+unit,y+familySize.bottom()+1);
-    points.setPoint(3,x+familySize.x()+unit+ofs,y+familySize.bottom()+1+ofs);
-    points.setPoint(4,x+familySize.x()+unit+ofs,y+familySize.y()+1+ofs);
-    points.setPoint(5,x+familySize.right()+ofs-2,y+familySize.y()+1+ofs);
-    points.setPoint(6,x+familySize.right()+ofs-2,y+familySize.y()+1);
-    points.setPoint(7,x+familySize.x()+unit,y+familySize.y()+1);  
-    points.setPoint(8,x+familySize.x()+unit,y+familySize.bottom()+1-2*ofs);  
-    // points.setPoint(9,x+familySize.x()+unit,y+familySize.bottom()+1);  
-    points.setPoint(9,x+familySize.x()+ofs,y+familySize.y()+unit);
+    points.setPoint(1,x+familySize().x(),y+familySize().y()+unit);
+    points.setPoint(2,x+familySize().x()+unit,y+familySize().bottom()+1);
+    points.setPoint(3,x+familySize().x()+unit+ofs,y+familySize().bottom()+1+ofs);
+    points.setPoint(4,x+familySize().x()+unit+ofs,y+familySize().y()+1+ofs);
+    points.setPoint(5,x+familySize().right()+ofs-2,y+familySize().y()+1+ofs);
+    points.setPoint(6,x+familySize().right()+ofs-2,y+familySize().y()+1);
+    points.setPoint(7,x+familySize().x()+unit,y+familySize().y()+1);  
+    points.setPoint(8,x+familySize().x()+unit,y+familySize().bottom()+1-2*ofs);  
+    // points.setPoint(9,x+familySize().x()+unit,y+familySize().bottom()+1);  
+    points.setPoint(9,x+familySize().x()+ofs,y+familySize().y()+unit);
     pen->setBrush(pen->pen().color());
     pen->drawPolygon(points,FALSE,1,9);
     /*
@@ -81,18 +81,18 @@ void DecorationElement::draw(QPoint draw
     */    
     if( beActive )
 	pen->setPen(blue);
-    child[0]->draw(QPoint(x+familySize.x()+unit+2+ofs+1,y),resolution);
-    myArea=globalSize;;
-    myArea.moveBy(x,y);
+    child[0]->draw(QPoint(x+familySize().x()+unit+2+ofs+1,y),resolution);
+    setMyArea(globalSize());
+    myArea().moveBy(x,y);
     // globalArea=
     // globalArea.moveBy(x,y);
 #ifdef RECT
-    pen->drawRect(myArea);   
+    pen->drawRect(myArea());   
     // pen->drawRect(globalArea); 
 #endif
     if(index[0]!=0L)
 	index[0]->draw(drawPoint+
-		       familySize.topLeft()-
+		       familySize().topLeft()-
 		       index[0]->getSize().bottomRight()
 		       +QPoint(unit/2,unit),
 		       resolution);  
@@ -100,7 +100,7 @@ void DecorationElement::draw(QPoint draw
     drawIndexes(pen,resolution);
     if( beActive )
 	pen->setPen(black);
-    if(next!=0L) next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+    if(next!=0L) next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
   
   
 }
@@ -117,24 +117,24 @@ void DecorationElement::checkSize()
 	}
   
     child[0]->checkSize();
-    familySize=child[0]->getSize();
-    familySize.setTop(familySize.top()-8-(numericFont/24));
-    familySize.setLeft(familySize.left()-8-(numericFont/24)-(familySize.height()/4)); \
 +    familySize(child[0]->getSize());
+    familySize().setTop(familySize().top()-8-(numericFont/24));
+    familySize().setLeft(familySize().left()-8-(numericFont/24)-(familySize().height()/4)); \
  
     /*
-    localSize is
+    localSize() is
     child[0]+lines or pixmap
     here put the code to calc it
-    unit=familySize.height()/4;
+    unit=familySize().height()/4;
   */
   
-    localSize=familySize;
-    checkIndexesSize();  //This will change localSize adding Indexes Size
-    familySize.moveBy(-localSize.left(),0);
-    localSize.moveBy(-localSize.left(),0);
-    globalSize=localSize;
-    nextDimension.moveBy(localSize.width(),0);
-    globalSize=globalSize.unite(nextDimension);
+    setLocalSize(familySize());
+    checkIndexesSize();  //This will change localSize() adding Indexes Size
+    familySize().moveBy(-localSize().left(),0);
+    localSize().moveBy(-localSize().left(),0);
+    setGlobalSize(localSize());
+    nextDimension.moveBy(localSize().width(),0);
+    setGlobalSize(globalSize().unite(nextDimension));
     //warning("end");
 }
 
Index: DecorationElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/DecorationElement.h,v
retrieving revision 1.4
diff -u -3 -p -r1.4 DecorationElement.h
--- DecorationElement.h	2000/10/19 11:39:21	1.4
+++ DecorationElement.h	2001/02/03 17:13:10
@@ -58,8 +58,12 @@ class DecorationElement : public BasicEl
      */
     virtual int takeAsciiFromKeyb(int action);
    
+    QString getContent() const {return content;}  
+    void setContent(QString a) {content=a.copy();}  
+    QString getContent() { return content;}
  
- protected:
+//protected:
+private:
    
     /*
      * If usePixmap is True we need a...
@@ -94,7 +98,7 @@ class DecorationElement : public BasicEl
    .......
    
  */  
-     
+    QString content;
    
 };
 
Index: FractionElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/FractionElement.cc,v
retrieving revision 1.15
diff -u -3 -p -r1.15 FractionElement.cc
--- FractionElement.cc	2000/10/19 11:39:21	1.15
+++ FractionElement.cc	2001/02/03 17:13:10
@@ -20,7 +20,7 @@ FractionElement::FractionElement(KFormul
 				 int Relation,
 				 BasicElement *Next,
 				 QString Content) :
-    BasicElement(Formula,Prev,Relation,Next,Content)
+    BasicElement(Formula,Prev,Relation,Next), content(Content)
 {
     /*
       Central alligned fraction
@@ -63,10 +63,10 @@ void FractionElement::draw(QPoint drawPo
 
     if (content[0]=='F') {
 	QPointArray points(5);
-	points.setPoint(1,x+familySize.x()+1,y+offsetY-ofs/2);
-	points.setPoint(2,x+familySize.right()-2,y+offsetY-ofs/2);
-	points.setPoint(3,x+familySize.right()-2,y+offsetY+ofs/2);
-	points.setPoint(4,x+familySize.x()+1,y+offsetY+ofs/2);
+	points.setPoint(1,x+familySize().x()+1,y+offsetY-ofs/2);
+	points.setPoint(2,x+familySize().right()-2,y+offsetY-ofs/2);
+	points.setPoint(3,x+familySize().right()-2,y+offsetY+ofs/2);
+	points.setPoint(4,x+familySize().x()+1,y+offsetY+ofs/2);
 	pen->setBrush(pen->pen().color());
 	pen->drawPolygon(points,FALSE,1,9);
     }
@@ -83,18 +83,18 @@ void FractionElement::draw(QPoint drawPo
 
     child[0]->draw(QPoint(x+x0+3,y+y0),resolution);
     child[1]->draw(QPoint(x+x1+3,y+y1),resolution);
-    myArea=globalSize;
-    myArea.moveBy(x,y);
+    setMyArea(globalSize());
+    myArea().moveBy(x,y);
 
 #ifdef RECT
-    pen->drawRect(myArea);
+    pen->drawRect(myArea());
     // pen->drawRect(globalArea);
 #endif
 
     drawIndexes(pen,resolution);
     if( beActive )
 	pen->setPen(Qt::black);
-    if(next!=0L) next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+    if(next!=0L) next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
 
 
 }
@@ -134,18 +134,18 @@ void FractionElement::checkSize()
         }
     child0Size.moveBy(0,-space/2-child0Size.bottom());
     child1Size.moveBy(0,space/2-child1Size.top());
-    familySize=child0Size.unite(child1Size);
+    setFamilySize(child0Size.unite(child1Size));
 
-    familySize.moveBy(0,offsetY);
-    familySize.setLeft(familySize.left()-3);
-    familySize.setRight(familySize.right()+3);
-    localSize=familySize;
-    checkIndexesSize();  //This will change localSize adding Indexes Size
-    familySize.moveBy(-localSize.left(),0);
-    localSize.moveBy(-localSize.left(),0);
-    globalSize=localSize;
-    nextDimension.moveBy(localSize.width(),0);
-    globalSize=globalSize.unite(nextDimension);
+    familySize().moveBy(0,offsetY);
+    familySize().setLeft(familySize().left()-3);
+    familySize().setRight(familySize().right()+3);
+    setLocalSize(familySize());
+    checkIndexesSize();  //This will change localSize() adding Indexes Size
+    familySize().moveBy(-localSize().left(),0);
+    localSize().moveBy(-localSize().left(),0);
+    setGlobalSize(localSize());
+    nextDimension.moveBy(localSize().width(),0);
+    setGlobalSize(globalSize().unite(nextDimension));
 }
 
 /*int FractionElement::takeAsciiFromKeyb(int)
Index: FractionElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/FractionElement.h,v
retrieving revision 1.9
diff -u -3 -p -r1.9 FractionElement.h
--- FractionElement.h	2000/10/19 11:39:21	1.9
+++ FractionElement.h	2001/02/03 17:13:10
@@ -66,7 +66,13 @@ class FractionElement : public BasicElem
     /*   virtual void save(int file);
 	 virtual void load(int file);
     */
- protected:
+
+    QString getContent() const {return content;}  
+    void setContent(QString a) {content=a.copy();}  
+    QString getContent() { return content;}
+    
+//protected:
+private:
         
     /*
      * Note for "content" meaning:
@@ -75,6 +81,8 @@ class FractionElement : public BasicElem
      * content[2]( HorizAlign) 'L'=left 'C'=center 'R'=right
      * content+3 space between num & den
      */
+    QString content;
+    
     int offsetY;
     int offsetX;   
 };
Index: MatrixElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/MatrixElement.cc,v
retrieving revision 1.15
diff -u -3 -p -r1.15 MatrixElement.cc
--- MatrixElement.cc	2000/10/19 11:39:21	1.15
+++ MatrixElement.cc	2001/02/03 17:13:11
@@ -19,7 +19,7 @@ MatrixElement::MatrixElement(KFormulaCon
 			     int Relation,
 			     BasicElement *Next,
 			     QString Content) :
-    BasicElement(Formula,Prev,Relation,Next,Content)
+    BasicElement(Formula,Prev,Relation,Next), content(Content)
 {
     /*
       Central alligned noborder 3x3 Matrix
@@ -50,7 +50,7 @@ void MatrixElement::draw(QPoint drawPoin
     pen=formula->painter();
     //QRect globalArea;
     int x,y;
-    x=drawPoint.x()+familySize.x();
+    x=drawPoint.x()+familySize().x();
     y=drawPoint.y();
     int rows=content.mid(3,3).toInt();
     int cols=content.mid(6,3).toInt();
@@ -79,9 +79,9 @@ void MatrixElement::draw(QPoint drawPoin
 		QPointArray points(4);
 	        points.setPoint(0,x,y+hby[r]+childPoint[c+r*cols].y()+vspace/2-ofs+ofs/2);
 		points.setPoint(1,x,y+hby[r]+childPoint[c+r*cols].y()+vspace/2+ofs/2);
-		points.setPoint(2,x+familySize.width(),
+		points.setPoint(2,x+familySize().width(),
 				  y+hby[r]+childPoint[c+r*cols].y()+vspace/2+ofs/2);
-	        points.setPoint(3,x+familySize.width(),
+	        points.setPoint(3,x+familySize().width(),
 				  y+hby[r]+childPoint[c+r*cols].y()+vspace/2-ofs+ofs/2);
 		pen->setBrush(pen->pen().color());
 		pen->drawPolygon(points,FALSE,0,4);
@@ -93,18 +93,18 @@ void MatrixElement::draw(QPoint drawPoin
 		QPointArray points(4);
 	        points.setPoint(0,x,y+hby[r]+childPoint[c+r*cols].y()+vspace/2-1);
 		points.setPoint(1,x,y+hby[r]+childPoint[c+r*cols].y()+vspace/2+ofs-1);
-		points.setPoint(2,x+familySize.width(),
+		points.setPoint(2,x+familySize().width(),
 				  y+hby[r]+childPoint[c+r*cols].y()+vspace/2-1);
-	        points.setPoint(3,x+familySize.width(),
+	        points.setPoint(3,x+familySize().width(),
 				  y+hby[r]+childPoint[c+r*cols].y()+vspace/2+ofs-1);
 		pen->setBrush(pen->pen().color());
 		pen->drawPolygon(points,FALSE,0,4);
 
 	        points.setPoint(0,x,y+hby[r]+childPoint[c+r*cols].y()+vspace/2+1+2*ofs);
 		points.setPoint(1,x,y+hby[r]+childPoint[c+r*cols].y()+vspace/2+3*ofs+1);
-		points.setPoint(2,x+familySize.width(),
+		points.setPoint(2,x+familySize().width(),
 				  y+hby[r]+childPoint[c+r*cols].y()+vspace/2+1+2*ofs);
-	        points.setPoint(3,x+familySize.width(),
+	        points.setPoint(3,x+familySize().width(),
 				  y+hby[r]+childPoint[c+r*cols].y()+vspace/2+3*ofs+1);
 		pen->setBrush(pen->pen().color());
 		pen->drawPolygon(points,FALSE,0,4);
@@ -118,10 +118,10 @@ void MatrixElement::draw(QPoint drawPoin
  	   {
             int hspace=content.mid(12,3).toInt()+ofs;
 	    QPointArray points(4);
-	    points.setPoint(0,minX+x+3-hspace/2-ofs+ofs/2,y+familySize.y());
-	    points.setPoint(1,minX+x+3-hspace/2-ofs+ofs/2,y+familySize.bottom());
-	    points.setPoint(2,minX+x+3-hspace/2+ofs/2,y+familySize.bottom());
-	    points.setPoint(3,minX+x+3-hspace/2+ofs/2,y+familySize.y());
+	    points.setPoint(0,minX+x+3-hspace/2-ofs+ofs/2,y+familySize().y());
+	    points.setPoint(1,minX+x+3-hspace/2-ofs+ofs/2,y+familySize().bottom());
+	    points.setPoint(2,minX+x+3-hspace/2+ofs/2,y+familySize().bottom());
+	    points.setPoint(3,minX+x+3-hspace/2+ofs/2,y+familySize().y());
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,0,4);
 	  }
@@ -129,16 +129,16 @@ void MatrixElement::draw(QPoint drawPoin
  	   {
             int hspace=content.mid(12,3).toInt();
 	    QPointArray points(4);
-	    points.setPoint(0,minX+x+3-hspace/2-ofs+1,y+familySize.y());
-	    points.setPoint(1,minX+x+3-hspace/2-ofs+1,y+familySize.bottom());
-	    points.setPoint(2,minX+x+3-hspace/2+1,y+familySize.bottom());
-	    points.setPoint(3,minX+x+3-hspace/2+1,y+familySize.y());
+	    points.setPoint(0,minX+x+3-hspace/2-ofs+1,y+familySize().y());
+	    points.setPoint(1,minX+x+3-hspace/2-ofs+1,y+familySize().bottom());
+	    points.setPoint(2,minX+x+3-hspace/2+1,y+familySize().bottom());
+	    points.setPoint(3,minX+x+3-hspace/2+1,y+familySize().y());
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,0,4);
-	    points.setPoint(0,minX+x+3-hspace/2-3*ofs-1,y+familySize.y());
-	    points.setPoint(1,minX+x+3-hspace/2-3*ofs-1,y+familySize.bottom());
-	    points.setPoint(2,minX+x+3-hspace/2-2*ofs-1,y+familySize.bottom());
-	    points.setPoint(3,minX+x+3-hspace/2-2*ofs-1,y+familySize.y());
+	    points.setPoint(0,minX+x+3-hspace/2-3*ofs-1,y+familySize().y());
+	    points.setPoint(1,minX+x+3-hspace/2-3*ofs-1,y+familySize().bottom());
+	    points.setPoint(2,minX+x+3-hspace/2-2*ofs-1,y+familySize().bottom());
+	    points.setPoint(3,minX+x+3-hspace/2-2*ofs-1,y+familySize().y());
 	    pen->setBrush(pen->pen().color());
 	    pen->drawPolygon(points,FALSE,0,4);
 
@@ -150,18 +150,18 @@ void MatrixElement::draw(QPoint drawPoin
 
     x=drawPoint.x();
 
-    myArea=globalSize;
-    myArea.moveBy(x,y);
+    setMyArea(globalSize());
+    myArea().moveBy(x,y);
 
 #ifdef RECT
-    pen->drawRect(myArea);
+    pen->drawRect(myArea());
     // pen->drawRect(globalArea);
 #endif
 
     drawIndexes(pen,resolution);
     if( beActive )
 	pen->setPen(Qt::black);
-    if(next!=0L) next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+    if(next!=0L) next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
 
 
 }
@@ -260,23 +260,23 @@ void MatrixElement::checkSize()
 	    sizeC=sizeC.unite(sizeR);
 	}
 
-    familySize=sizeC;
-    // familySize.setBottom(familySize.bottom()+vspace);
-    familySize.moveBy(0,correction);
+    setFamilySize(sizeC);
+    // familySize().setBottom(familySize().bottom()+vspace);
+    familySize().moveBy(0,correction);
     int topBorderCorr=0;
     if(content[17]=='L')
        topBorderCorr=ofs+1+space;
     if(content[17]=='D')
        topBorderCorr=3*ofs+2+space;
     //correction+=topBorderCorr;
-    familySize.setTop(familySize.top()-topBorderCorr);
+    familySize().setTop(familySize().top()-topBorderCorr);
 
     for(c=0;c<cols*rows;c++)
 	childPoint[c]+=QPoint(0,correction);
 
     if(content[1]=='C')
-	correction=-familySize.height()/2;
-    familySize.moveBy(0,correction);
+	correction=-familySize().height()/2;
+    familySize().moveBy(0,correction);
 
     for(c=0;c<cols*rows;c++)
 	childPoint[c]+=QPoint(0,correction);
@@ -317,19 +317,19 @@ And now columns!!
 //	warning("R+X:%i,Y:%i,W:%i,E:%i",sizeR.x(),sizeR.y(),sizeR.height(),sizeR.width());
  }
     sizeR.setRight(sizeR.right()-hspace);
-    familySize=familySize.unite(sizeR);
+    setFamilySize(familySize().unite(sizeR));
 
     //Add Margins!!!
 
-    familySize.setLeft(familySize.left()-3);
-    familySize.setRight(familySize.right()+3);
-    localSize=familySize;
-    checkIndexesSize();  //This will change localSize adding Indexes Size
-    familySize.moveBy(-localSize.left(),0);
-    localSize.moveBy(-localSize.left(),0);
-    globalSize=localSize;
-    nextDimension.moveBy(localSize.width(),0);
-    globalSize=globalSize.unite(nextDimension);
+    familySize().setLeft(familySize().left()-3);
+    familySize().setRight(familySize().right()+3);
+    setLocalSize(familySize());
+    checkIndexesSize();  //This will change localSize() adding Indexes Size
+    familySize().moveBy(-localSize().left(),0);
+    localSize().moveBy(-localSize().left(),0);
+    setGlobalSize(localSize());
+    nextDimension.moveBy(localSize().width(),0);
+    setGlobalSize(globalSize().unite(nextDimension));
 }
 
 /* int MatrixElement::takeAsciiFromKeyb(int)
Index: MatrixElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/MatrixElement.h,v
retrieving revision 1.10
diff -u -3 -p -r1.10 MatrixElement.h
--- MatrixElement.h	2000/10/19 11:39:21	1.10
+++ MatrixElement.h	2001/02/03 17:13:11
@@ -68,7 +68,13 @@ class MatrixElement : public BasicElemen
     /*   virtual void save(int file);
 	 virtual void load(int file);
     */
- protected:
+
+    QString getContent() const {return content;}  
+    void setContent(QString a) {content=a.copy();}  
+    QString getContent() { return content;}
+    
+//protected:
+private:
         
     /*
      * Note for "content" meaning:
@@ -80,6 +86,8 @@ class MatrixElement : public BasicElemen
      * 2: C,L,R Horiz align
      * 15,16,17,18,19,20=Horiz,Vert,top,bottom,left,right border: L=Single Line
      */
+    QString content;
+    
     QArray<QPoint> childPoint;
     QArray<int> hby;   // Y of internal H border
   
Index: PrefixedElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/PrefixedElement.cc,v
retrieving revision 1.14
diff -u -3 -p -r1.14 PrefixedElement.cc
--- PrefixedElement.cc	2000/10/19 11:39:21	1.14
+++ PrefixedElement.cc	2001/02/03 17:13:11
@@ -23,7 +23,7 @@ PrefixedElement::PrefixedElement(KFormul
 				 int Relation,
 				 BasicElement *Next,
 				 QString Content) :
-    BasicElement(Formula,Prev,Relation,Next,Content)
+    BasicElement(Formula,Prev,Relation,Next), content(Content)
 {
   /*
     Stuff to load pixmap (if need)
@@ -46,7 +46,7 @@ void PrefixedElement::draw(QPoint drawPo
 
   QPainter *pen=formula->painter();
   //QRect globalArea;
-  int x,y,unit=0; //unit is familySize.height/6,used to draw proportional Prefixeds
+  int x,y,unit=0; //unit is familySize().height/6,used to draw proportional \
Prefixeds  x=drawPoint.x();
   y=drawPoint.y();
   if( beActive )
@@ -62,9 +62,9 @@ void PrefixedElement::draw(QPoint drawPo
   int symB=0;   // symbol (integral,sum...)
   if( content[1]=='S')
     {
-      symT=familySize.top();
-      symB=familySize.bottom();
-      unit = (familySize.height()-2*ofs)/8;
+      symT=familySize().top();
+      symB=familySize().bottom();
+      unit = (familySize().height()-2*ofs)/8;
     }
   if( content[1]=='F')
     {
@@ -84,32 +84,32 @@ void PrefixedElement::draw(QPoint drawPo
     {
       QColor elementColor(pen->pen().color());
       pen->setBrush(elementColor);
-      pen->drawChord(x+familySize.x()-ofs+unit+1,y+symT,
+      pen->drawChord(x+familySize().x()-ofs+unit+1,y+symT,
 		     unit+2*ofs,(unit+ofs)*2,
 		     0,180*16);
       pen->setBrush(pen->backgroundColor());
       pen->setPen(pen->backgroundColor());
-      pen->drawChord(x+familySize.x()+unit+1,y+symT+ofs  ,
+      pen->drawChord(x+familySize().x()+unit+1,y+symT+ofs  ,
 		     unit,unit*2+ofs,
 		     0,180*16);
       pen->setPen(elementColor);
 
       pen->setBrush(elementColor);
-      pen->drawChord(x+familySize.x()+1,y+symB-(unit+ofs)*2,
+      pen->drawChord(x+familySize().x()+1,y+symB-(unit+ofs)*2,
 		     unit+ofs*2,(unit+ofs)*2,
 		     180*16,180*16);
       pen->setBrush(pen->backgroundColor());
       pen->setPen(pen->backgroundColor());
-      pen->drawChord(x+familySize.x()+ofs+1,y+symB-(unit+ofs)*2,
+      pen->drawChord(x+familySize().x()+ofs+1,y+symB-(unit+ofs)*2,
 		     unit,unit*2+ofs,
 		     180*16,180*16);
       pen->setPen(elementColor);
 
       QPointArray points(5);
-      points.setPoint(1,x+familySize.x()+unit+ofs+1 ,y+symB-unit-ofs    );
-      points.setPoint(2,x+familySize.x()+unit+ofs*2  ,y+symB-unit-ofs  );
-      points.setPoint(3,x+familySize.x()+unit,y+symT+unit+ofs-1);
-      points.setPoint(4,x+familySize.x()-ofs+unit+1,y+symT+unit+ofs-1);
+      points.setPoint(1,x+familySize().x()+unit+ofs+1 ,y+symB-unit-ofs    );
+      points.setPoint(2,x+familySize().x()+unit+ofs*2  ,y+symB-unit-ofs  );
+      points.setPoint(3,x+familySize().x()+unit,y+symT+unit+ofs-1);
+      points.setPoint(4,x+familySize().x()-ofs+unit+1,y+symT+unit+ofs-1);
       pen->setBrush(pen->pen().color());
       pen->drawPolygon(points,FALSE,1,4);
     }
@@ -118,11 +118,11 @@ void PrefixedElement::draw(QPoint drawPo
     else  if(content[0]=='S')  //Sum
     {
       QPointArray points(6);
-      points.setPoint(1,x+familySize.x()+unit , y+familySize.y()  );
-      points.setPoint(2,x+familySize.x() , y+familySize.y() );
-      points.setPoint(3,x+familySize.x()+unit,y+familySize.y()+ \
                (y+familySize.bottom()-(y+familySize.y()))/2);
-      points.setPoint(4,x+familySize.x(),y+familySize.bottom());
-      points.setPoint(5,x+familySize.x()+unit , y+familySize.bottom());
+      points.setPoint(1,x+familySize().x()+unit , y+familySize().y()  );
+      points.setPoint(2,x+familySize().x() , y+familySize().y() );
+      points.setPoint(3,x+familySize().x()+unit,y+familySize().y()+ \
(y+familySize().bottom()-(y+familySize().y()))/2); +      \
points.setPoint(4,x+familySize().x(),y+familySize().bottom()); +      \
points.setPoint(5,x+familySize().x()+unit , y+familySize().bottom());  \
pen->setBrush(pen->pen().color());  pen->drawPolyline(points,1,5);
     }
@@ -131,20 +131,20 @@ void PrefixedElement::draw(QPoint drawPo
     else if(content[0]=='P')  //Product
     {
      QPointArray points(6);
-      points.setPoint(1,x+familySize.x()+unit , y+familySize.y()  );
-      points.setPoint(2,x+familySize.x() , y+familySize.y() );
+      points.setPoint(1,x+familySize().x()+unit , y+familySize().y()  );
+      points.setPoint(2,x+familySize().x() , y+familySize().y() );
       pen->setBrush(pen->pen().color());
       pen->drawPolyline(points,1,2);
-      points.setPoint(1,x+familySize.x()+unit/4,y+familySize.y());
-        points.setPoint(2,x+familySize.x()+unit/4/*+ofs*/,y+familySize.y());
-	  points.setPoint(3,x+familySize.x()+unit/4/*+ofs*/,y+familySize.bottom());
-	  points.setPoint(4,x+familySize.x()+unit/4,y+familySize.bottom());
+      points.setPoint(1,x+familySize().x()+unit/4,y+familySize().y());
+        points.setPoint(2,x+familySize().x()+unit/4/*+ofs*/,y+familySize().y());
+	  points.setPoint(3,x+familySize().x()+unit/4/*+ofs*/,y+familySize().bottom());
+	  points.setPoint(4,x+familySize().x()+unit/4,y+familySize().bottom());
                 pen->setBrush(pen->pen().color());
 	  pen->drawPolyline(points,1,4);
-                        \
                points.setPoint(1,x+familySize.x()+unit*3/4,y+familySize.y());
-	  points.setPoint(2,x+familySize.x()+unit*3/4/*+ofs*/,y+familySize.y());
-	  points.setPoint(3,x+familySize.x()+unit*3/4/*+ofs*/,y+familySize.bottom());
-	  points.setPoint(4,x+familySize.x()+unit*3/4,y+familySize.bottom());
+                        \
points.setPoint(1,x+familySize().x()+unit*3/4,y+familySize().y()); +	  \
points.setPoint(2,x+familySize().x()+unit*3/4/*+ofs*/,y+familySize().y()); +	  \
points.setPoint(3,x+familySize().x()+unit*3/4/*+ofs*/,y+familySize().bottom()); +	  \
points.setPoint(4,x+familySize().x()+unit*3/4,y+familySize().bottom());  \
pen->setBrush(pen->pen().color());  pen->drawPolyline(points,1,4);
 
@@ -155,16 +155,16 @@ void PrefixedElement::draw(QPoint drawPo
   if( beActive )
     pen->setPen(Qt::blue);
   //I must add MaxLimitWidth
-  //    child[0]->draw(QPoint(x+familySize.x()+unit*2+ofs+1,y),resolution);
-  child[0]->draw(QPoint(x+familySize.right()-child[0]->getSize().width(),y),resolution);
 +  //    child[0]->draw(QPoint(x+familySize().x()+unit*2+ofs+1,y),resolution);
+  child[0]->draw(QPoint(x+familySize().right()-child[0]->getSize().width(),y),resolution);
  
   int y1=0,y2=0;
   if( content[1]=='S')
     {
       if(child[1]!=0)
-	y1=y-child[1]->getSize().top()+familySize.top();
+	y1=y-child[1]->getSize().top()+familySize().top();
       if(child[2]!=0)
-	y2=y-child[2]->getSize().bottom()+familySize.bottom();
+	y2=y-child[2]->getSize().bottom()+familySize().bottom();
     }
   if( content[1]=='F')
     {
@@ -175,24 +175,24 @@ void PrefixedElement::draw(QPoint drawPo
     }
 
   if(child[1]!=0)
-    child[1]->draw(QPoint(x+familySize.x()+unit*2+ofs+1,y1),resolution);
+    child[1]->draw(QPoint(x+familySize().x()+unit*2+ofs+1,y1),resolution);
 
   if(child[2]!=0)
-    child[2]->draw(QPoint(x+familySize.x()+unit*2+ofs+1,y2),resolution);
+    child[2]->draw(QPoint(x+familySize().x()+unit*2+ofs+1,y2),resolution);
 
-  myArea=globalSize;
-  myArea.moveBy(x,y);
+  setMyArea(globalSize());
+  myArea().moveBy(x,y);
   // globalArea=
   // globalArea.moveBy(x,y);
 #ifdef RECT
-  pen->drawRect(myArea);
+  pen->drawRect(myArea());
   // pen->drawRect(globalArea);
 #endif
   drawIndexes(pen,resolution);
   if( beActive )
     pen->setPen(Qt::black);
   if(next!=0L)
-    next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+    next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
 }
 
 void PrefixedElement::checkSize()
@@ -207,7 +207,7 @@ void PrefixedElement::checkSize()
     }
 
   child[0]->checkSize();
-  familySize=child[0]->getSize();
+  setFamilySize(child[0]->getSize());
 
   if (child[1]!=0)
     {
@@ -232,15 +232,16 @@ void PrefixedElement::checkSize()
     MaxX=child1Size.width();
   else
     MaxX=child2Size.width();
-  familySize.moveBy(MaxX,0);
-  child1Size.moveBy(0,familySize.top()-child1Size.bottom());
-  child2Size.moveBy(0,familySize.bottom()-child2Size.top());
-  familySize=familySize.unite(child1Size);
-  familySize=familySize.unite(child2Size);
+  familySize().moveBy(MaxX,0);
+  child1Size.moveBy(0,familySize().top()-child1Size.bottom());
+  child2Size.moveBy(0,familySize().bottom()-child2Size.top());
+#warning Nonsense!
+  setFamilySize(familySize().unite(child1Size));
+  setFamilySize(familySize().unite(child2Size));
 
   int unit=0;
   if( content[1]=='S')
-    unit = (familySize.height())/8 ;
+    unit = (familySize().height())/8 ;
   if( content[1]=='F')
     unit = content.mid(2,3).toInt();
   if (unit< 4)
@@ -249,25 +250,25 @@ void PrefixedElement::checkSize()
 
   int ofs=(numericFont/24);
   if (unit <6)ofs=1;
-  familySize.setTop(familySize.top()-1-ofs);
-  familySize.setLeft(familySize.left()-1-ofs-unit*2);
+  familySize().setTop(familySize().top()-1-ofs);
+  familySize().setLeft(familySize().left()-1-ofs-unit*2);
 
-  if (familySize.height()< unit*8 )
+  if (familySize().height()< unit*8 )
     {
-      if (familySize.top() >-unit*4)
-	familySize.setTop(-unit*4 );
-      if (familySize.bottom() < unit*4)
-	familySize.setBottom( unit*4  );
+      if (familySize().top() >-unit*4)
+	familySize().setTop(-unit*4 );
+      if (familySize().bottom() < unit*4)
+	familySize().setBottom( unit*4  );
 
     }
 
-  localSize=familySize;
-  checkIndexesSize();  //This will change localSize adding Indexes Size
-  familySize.moveBy(-localSize.left(),0);
-  localSize.moveBy(-localSize.left(),0);
-  globalSize=localSize;
-  nextDimension.moveBy(localSize.width(),0);
-  globalSize=globalSize.unite(nextDimension);
+  setLocalSize(familySize());
+  checkIndexesSize();  //This will change localSize() adding Indexes Size
+  familySize().moveBy(-localSize().left(),0);
+  localSize().moveBy(-localSize().left(),0);
+  setGlobalSize(localSize());
+  nextDimension.moveBy(localSize().width(),0);
+  setGlobalSize(globalSize().unite(nextDimension));
 
 }
 /*
Index: PrefixedElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/PrefixedElement.h,v
retrieving revision 1.6
diff -u -3 -p -r1.6 PrefixedElement.h
--- PrefixedElement.h	2000/10/19 11:39:21	1.6
+++ PrefixedElement.h	2001/02/03 17:13:12
@@ -65,7 +65,13 @@ class PrefixedElement : public BasicElem
     /*   virtual void save(int file);
 	 virtual void load(int file);
     */
- protected:
+
+    QString getContent() const {return content;}  
+    void setContent(QString a) {content=a.copy();}  
+    QString getContent() { return content;}
+    
+//protected:
+private:
    
     /*
      *Note: Content meaning
@@ -75,7 +81,8 @@ class PrefixedElement : public BasicElem
      * content[1] 'F'=Fixed size 'S'=AutoScale Size
      * content[2..4] Fixed Size Value
      */
- 
+    QString content;
+    
      /*
      * If usePixmap is True we need a...
      */    
Index: RootElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/RootElement.cc,v
retrieving revision 1.17
diff -u -3 -p -r1.17 RootElement.cc
--- RootElement.cc	2000/10/19 11:39:21	1.17
+++ RootElement.cc	2001/02/03 17:13:12
@@ -16,9 +16,8 @@
 RootElement::RootElement(KFormulaContainer *Formula,
 			 BasicElement *Prev,
 			 int Relation,
-			 BasicElement *Next,
-			 QString Content) :
-    BasicElement(Formula,Prev,Relation,Next,Content)
+			 BasicElement *Next) :
+    BasicElement(Formula,Prev,Relation,Next)
 {
     /*
       Stuff to load pixmap (if need)
@@ -40,10 +39,10 @@ void RootElement::draw(QPoint drawPoint,
 
     QPainter *pen=formula->painter();
     //QRect globalArea;
-    int x,y,unit; //unit is familySize.height/4,used to draw proportional roots
+    int x,y,unit; //unit is familySize().height/4,used to draw proportional roots
     x=drawPoint.x();
     y=drawPoint.y();
-    unit=familySize.height()/3;
+    unit=familySize().height()/3;
      if( beActive )
 	pen->setPen(Qt::red);
 
@@ -59,12 +58,12 @@ void RootElement::draw(QPoint drawPoint,
     /*
       //  int ofs;
       for(ofs=0;ofs<rootFont+1;ofs++){
-      pen->drawLine(x+familySize.x()+ofs,y+familySize.y()+unit+1,
-      x+familySize.x()+unit+ofs,y+familySize.bottom()+3+ofs);//familySize.y is < 0
-      pen->drawLine(x+familySize.x()+unit+ofs,y+familySize.y()+3+ofs,
-      x+familySize.x()+unit+ofs,y+familySize.bottom()+ofs);
-      pen->drawLine(x+familySize.x()+unit+ofs,y+familySize.y()+3+ofs,
-      x+familySize.right()+rootFont+1,y+familySize.y()+3+ofs);
+      pen->drawLine(x+familySize().x()+ofs,y+familySize().y()+unit+1,
+      x+familySize().x()+unit+ofs,y+familySize().bottom()+3+ofs);//familySize().y is \
< 0 +      pen->drawLine(x+familySize().x()+unit+ofs,y+familySize().y()+3+ofs,
+      x+familySize().x()+unit+ofs,y+familySize().bottom()+ofs);
+      pen->drawLine(x+familySize().x()+unit+ofs,y+familySize().y()+3+ofs,
+      x+familySize().right()+rootFont+1,y+familySize().y()+3+ofs);
       } */
       
       QColor elementColor(pen->pen().color());
@@ -72,33 +71,33 @@ void RootElement::draw(QPoint drawPoint,
      
      
       pen->setPen(QPen(elementColor,ofs*2));
-      pen->drawLine(x+familySize.x()+unit/3,y+familySize.y()+unit+2,
-      x+familySize.x()+unit/2+unit/3,y+familySize.bottom()+1);//familySize.y is < 0
+      pen->drawLine(x+familySize().x()+unit/3,y+familySize().y()+unit+2,
+      x+familySize().x()+unit/2+unit/3,y+familySize().bottom()+1);//familySize().y \
is < 0  
       pen->setPen(QPen(elementColor,ofs));
 
-      pen->drawLine(x+familySize.x()+unit+unit/3,y+familySize.y()+3,
-      x+familySize.x()+unit/2+unit/3,y+familySize.bottom());
+      pen->drawLine(x+familySize().x()+unit+unit/3,y+familySize().y()+3,
+      x+familySize().x()+unit/2+unit/3,y+familySize().bottom());
 
-      pen->drawLine(x+familySize.x()+unit+unit/3,y+familySize.y()+3,
-      x+familySize.right()+1,y+familySize.y()+3);
+      pen->drawLine(x+familySize().x()+unit+unit/3,y+familySize().y()+3,
+      x+familySize().right()+1,y+familySize().y()+3);
       	
-      pen->drawLine(x+familySize.x()+unit/3,y+familySize.y()+unit+1,
-             x+familySize.x(),y+familySize.y()+unit+1+unit/2);
+      pen->drawLine(x+familySize().x()+unit/3,y+familySize().y()+unit+1,
+             x+familySize().x(),y+familySize().y()+unit+1+unit/2);
       
       
 /*    warning("Array");
     QPointArray points(10);
-    points.setPoint(1,x+familySize.x(),y+familySize.y()+unit);
-    points.setPoint(2,x+familySize.x()+unit,y+familySize.bottom()+1);
-    points.setPoint(3,x+familySize.x()+unit+ofs,y+familySize.bottom()+1+ofs);
-    points.setPoint(4,x+familySize.x()+unit+ofs,y+familySize.y()+1+ofs);
-    points.setPoint(5,x+familySize.right()+ofs-2,y+familySize.y()+1+ofs);
-    points.setPoint(6,x+familySize.right()+ofs-2,y+familySize.y()+1);
-    points.setPoint(7,x+familySize.x()+unit,y+familySize.y()+1);
-    points.setPoint(8,x+familySize.x()+unit,y+familySize.bottom()+1-2*ofs);
-    // points.setPoint(9,x+familySize.x()+unit,y+familySize.bottom()+1);
-    points.setPoint(9,x+familySize.x()+ofs,y+familySize.y()+unit);
+    points.setPoint(1,x+familySize().x(),y+familySize().y()+unit);
+    points.setPoint(2,x+familySize().x()+unit,y+familySize().bottom()+1);
+    points.setPoint(3,x+familySize().x()+unit+ofs,y+familySize().bottom()+1+ofs);
+    points.setPoint(4,x+familySize().x()+unit+ofs,y+familySize().y()+1+ofs);
+    points.setPoint(5,x+familySize().right()+ofs-2,y+familySize().y()+1+ofs);
+    points.setPoint(6,x+familySize().right()+ofs-2,y+familySize().y()+1);
+    points.setPoint(7,x+familySize().x()+unit,y+familySize().y()+1);
+    points.setPoint(8,x+familySize().x()+unit,y+familySize().bottom()+1-2*ofs);
+    // points.setPoint(9,x+familySize().x()+unit,y+familySize().bottom()+1);
+    points.setPoint(9,x+familySize().x()+ofs,y+familySize().y()+unit);
     pen->setBrush(pen->pen().color());
     pen->drawPolygon(points,FALSE,1,9);
 */    /*
@@ -106,18 +105,18 @@ void RootElement::draw(QPoint drawPoint,
     */
     if( beActive )
 	pen->setPen(Qt::blue);
-    child[0]->draw(QPoint(x+familySize.x()+unit+unit/3+2+ofs+1,y),resolution);
-    myArea=globalSize;;
-    myArea.moveBy(x,y);
+    child[0]->draw(QPoint(x+familySize().x()+unit+unit/3+2+ofs+1,y),resolution);
+    setMyArea(globalSize());
+    myArea().moveBy(x,y);
     // globalArea=
     // globalArea.moveBy(x,y);
 #ifdef RECT
-    pen->drawRect(myArea);
+    pen->drawRect(myArea());
     // pen->drawRect(globalArea);
 #endif
     if(index[0]!=0L)
 	index[0]->draw(drawPoint+
-		       familySize.topLeft()-
+		       familySize().topLeft()-
 		       index[0]->getSize().bottomRight()
 		       +QPoint(unit/2+unit/3,unit),
 		       resolution);
@@ -125,7 +124,7 @@ void RootElement::draw(QPoint drawPoint,
     drawIndexes(pen,resolution);
     if( beActive )
 	pen->setPen(Qt::black);
-    if(next!=0L) next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+    if(next!=0L) next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
 
 
 }
@@ -142,24 +141,24 @@ void RootElement::checkSize()
 	}
 
     child[0]->checkSize();
-    familySize=child[0]->getSize();
-    familySize.setTop(familySize.top()-8-(numericFont/24));
-    familySize.setLeft(familySize.left()-8-(numericFont/24)-(familySize.height()/2));
 +    setFamilySize(child[0]->getSize());
+    familySize().setTop(familySize().top()-8-(numericFont/24));
+    familySize().setLeft(familySize().left()-8-(numericFont/24)-(familySize().height()/2));
  
     /*
-    localSize is
+    localSize() is
     child[0]+lines or pixmap
     here put the code to calc it
-    unit=familySize.height()/4;
+    unit=familySize().height()/4;
   */
 
-    localSize=familySize;
-    checkIndexesSize();  //This will change localSize adding Indexes Size
-    familySize.moveBy(-localSize.left(),0);
-    localSize.moveBy(-localSize.left(),0);
-    globalSize=localSize;
-    nextDimension.moveBy(localSize.width(),0);
-    globalSize=globalSize.unite(nextDimension);
+    setLocalSize(familySize());
+    checkIndexesSize();  //This will change localSize() adding Indexes Size
+    familySize().moveBy(-localSize().left(),0);
+    localSize().moveBy(-localSize().left(),0);
+    setGlobalSize(localSize());
+    nextDimension.moveBy(localSize().width(),0);
+    setGlobalSize(globalSize().unite(nextDimension));
     //warning("end");
 }
 /*
@@ -189,15 +188,15 @@ void RootElement::drawIndexes(QPainter *
     /*
       Index[0] is in draw() must be lower...
     */
-    QPoint dp = myArea.topLeft() - globalSize.topLeft();
+    QPoint dp = myArea().topLeft() - globalSize().topLeft();
     if(index[1]!=0L)
-	index[1]->draw(dp+familySize.bottomLeft() -
+	index[1]->draw(dp+familySize().bottomLeft() -
 		       index[1]->getSize().topRight(),resolution);
     if(index[2]!=0L)
-	index[2]->draw(dp+familySize.topRight() -
+	index[2]->draw(dp+familySize().topRight() -
 		       index[2]->getSize().bottomLeft(),resolution);
     if(index[3]!=0L)
-	index[3]->draw(dp+familySize.bottomRight() -
+	index[3]->draw(dp+familySize().bottomRight() -
 		       index[3]->getSize().topLeft(),resolution);
 }
 
Index: RootElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/RootElement.h,v
retrieving revision 1.10
diff -u -3 -p -r1.10 RootElement.h
--- RootElement.h	2000/10/19 11:39:21	1.10
+++ RootElement.h	2001/02/03 17:13:12
@@ -21,8 +21,7 @@ class RootElement : public BasicElement
      * Normal constructor, Get font from prev element
      */
     RootElement(KFormulaContainer *Formula,BasicElement *Prev=0,
-		int Relation=-1,BasicElement *Next=0,
-		QString Content="");
+		int Relation=-1,BasicElement *Next=0);
        
     /*
      * Link Next & Prev removing itself
Index: TextElement.cc
===================================================================
RCS file: /home/kde/koffice/kformula/TextElement.cc,v
retrieving revision 1.16
diff -u -3 -p -r1.16 TextElement.cc
--- TextElement.cc	2000/10/19 11:39:21	1.16
+++ TextElement.cc	2001/02/03 17:13:13
@@ -26,8 +26,8 @@ TextElement::TextElement(KFormulaContain
 			 BasicElement *Prev,
 			 int Relation,
 			 BasicElement *Next,
-			 QString Content) :
-    BasicElement(Formula,Prev,Relation,Next,Content)
+			 QString Text) :
+    BasicElement(Formula,Prev,Relation,Next), text(Text)
 {
   kdDebug(39001) <<"A new text is born..\n";
   QFont tmpfont = KGlobalSettings::generalFont();
@@ -53,31 +53,31 @@ void TextElement::draw(QPoint drawPoint,
   
   if( beActive )
     pen->setPen(Qt::red);
-  if ( content.isEmpty() )
-    pen->drawRect(x+familySize.x(),y-5,5,10);
+  if ( text.isEmpty() )
+    pen->drawRect(x+familySize().x(),y-5,5,10);
   else
     {
       //kdDebug(39001) <<"Font for text\n";
       pen->setFont(font);
-      pen->drawText(x+familySize.x(),y+offsetY,content);
+      pen->drawText(x+familySize().x(),y+offsetY,text);
     }
   if(beActive)
     pen->setPen(Qt::blue);
-  myArea=globalSize;
-  myArea.moveBy(x,y);
+  setMyArea(globalSize());
+  myArea().moveBy(x,y);
 #ifdef RECT
   /*QRect  localArea;
-    localArea=localSize;
+    localArea=localSize();
     localArea.moveBy(x,y);
     pen->drawRect(localArea);
-    localArea=familySize;
+    localArea=familySize();
     localArea.moveBy(x,y);
     pen->drawRect(localArea);
   */
   pen->setBrush(green);
   pen->setBrush(NoBrush);
-  pen->drawRect(myArea);
-  QRect area(localSize);
+  pen->drawRect(myArea());
+  QRect area(localSize());
   area.moveBy(x,y);
   pen->drawRect(area);
   pen->setBrush(SolidPattern);
@@ -87,7 +87,7 @@ void TextElement::draw(QPoint drawPoint,
   if(beActive)
     pen->setPen(Qt::black);
   if(next!=0L) 
-    next->draw(drawPoint+QPoint(localSize.width(),0),resolution);
+    next->draw(drawPoint+QPoint(localSize().width(),0),resolution);
 }
 
 void TextElement::checkSize()
@@ -103,27 +103,27 @@ void TextElement::checkSize()
   }
 
   offsetY=fm.strikeOutPos();
-  familySize=fm.boundingRect(content);
-  familySize.moveBy(0,offsetY);
-  if(content.isEmpty())
-    familySize.setRect(0,-5,10,10);
+  setFamilySize(fm.boundingRect(text));
+  familySize().moveBy(0,offsetY);
+  if(text.isEmpty())
+    familySize().setRect(0,-5,10,10);
   
   int offsetX;  // Need To adjust X value
-  offsetX=familySize.left();
+  offsetX=familySize().left();
   
   if( offsetX<0)
-    familySize.moveBy(-offsetX,0);
+    familySize().moveBy(-offsetX,0);
   else {
-    familySize.setLeft(0);
+    familySize().setLeft(0);
     offsetX=0;
   }
-  localSize=familySize;
-  checkIndexesSize();  //This will change localSize adding Indexes Size
-  familySize.moveBy(-localSize.left()-offsetX,0);
-  localSize.moveBy(-localSize.left(),0);
-  globalSize=localSize;
-  nextDimension.moveBy(localSize.width(),0);
-  globalSize=globalSize.unite(nextDimension);
+  setLocalSize(familySize());
+  checkIndexesSize();  //This will change localSize() adding Indexes Size
+  familySize().moveBy(-localSize().left()-offsetX,0);
+  localSize().moveBy(-localSize().left(),0);
+  setGlobalSize(localSize());
+  nextDimension.moveBy(localSize().width(),0);
+  setGlobalSize(globalSize().unite(nextDimension));
   kdDebug(39001) <<"End\n";
 }
 
@@ -164,38 +164,38 @@ void TextElement::split(int pos)
   //fix it
   TextElement *FirstHalf = new TextElement(formula);
   insertElement(FirstHalf);
-  FirstHalf->setContent(content.left(pos));
+  FirstHalf->setContent(text.left(pos));
   FirstHalf->setNumericFont(numericFont);
   
   FirstHalf->changeFontFamily(font.family());
   FirstHalf->changePropertieFont(font.bold(),font.underline(),font.italic());
   
-  setContent(content.right(content.length()-pos));
-  kdDebug(39001) <<content<<endl;
+  setContent(text.right(text.length()-pos));
+  kdDebug(39001) <<text<<endl;
   
-  position=content.length();
+  position=text.length();
   
 }
 
 QRect TextElement::getCursor(int atPos)
 {
-  QPoint dp = myArea.topLeft()-globalSize.topLeft();
+  QPoint dp = myArea().topLeft()-globalSize().topLeft();
   
   if(atPos>0)
     {
       atPos--;
       QFontMetrics fm(font);
-      return (QRect(dp.x()+familySize.x()+fm.width(content,atPos),
-		    dp.y()+familySize.top()-1,
-		    5,familySize.height()+2));
+      return (QRect(dp.x()+familySize().x()+fm.width(text,atPos),
+		    dp.y()+familySize().top()-1,
+		    5,familySize().height()+2));
       
     }
   else
     {
       if(atPos==0)
-	return (QRect(dp.x()+familySize.x()-3,dp.y()-7,5,14));
+	return (QRect(dp.x()+familySize().x()-3,dp.y()-7,5,14));
       else
-	return (QRect(dp.x()+localSize.width()+2,dp.y()-8,5,16));
+	return (QRect(dp.x()+localSize().width()+2,dp.y()-8,5,16));
     }
   
   
@@ -217,7 +217,7 @@ void TextElement::makeList(bool active)
       }
   kdDebug(39001) <<"index OK\n";
   
-  for(unsigned int i=1;i<=content.length()+1;i++)
+  for(unsigned int i=1;i<=text.length()+1;i++)
     formula->addElement(this, i);
   
   for(int i=2;i<4;i++)
Index: TextElement.h
===================================================================
RCS file: /home/kde/koffice/kformula/TextElement.h,v
retrieving revision 1.14
diff -u -3 -p -r1.14 TextElement.h
--- TextElement.h	2000/10/19 11:39:21	1.14
+++ TextElement.h	2001/02/03 17:13:17
@@ -14,8 +14,8 @@
 #include "BasicElement.h"
 
 class TextElement : public BasicElement
- {
- public:
+{
+public:
    /*
     * Normal constructor, Get font from prev element
     */
@@ -91,7 +91,15 @@ class TextElement : public BasicElement
    /*   virtual void save(int file);
 	virtual void load(int file);
    */
- protected:
+
+    QString getContent() const {return text;}  
+    void setContent(QString a) {text=a.copy();}  
+    QString getContent() { return text;}
+    
+//protected:
+private:
+
+    QString text;
 
    /*
     * Normal text need it
Index: kformula_doc.cc
===================================================================
RCS file: /home/kde/koffice/kformula/kformula_doc.cc,v
retrieving revision 1.51
diff -u -3 -p -r1.51 kformula_doc.cc
--- kformula_doc.cc	2000/10/22 12:22:02	1.51
+++ kformula_doc.cc	2001/02/03 17:13:18
@@ -57,7 +57,8 @@ KFormulaDoc::KFormulaDoc( QWidget *paren
   m_bModified = false;
   m_bEmpty = true;
 
-  theFirstElement= new BasicElement(this,0L,-1,0L,"");
+  //theFirstElement= new BasicElement(this,0L,-1,0L,"");
+  theFirstElement= new BasicElement(this,0L,-1,0L);
   addElement(theFirstElement, 0);
   addElement(theFirstElement, -1);
   eList.at(0);
@@ -549,10 +550,13 @@ if(!isReadWrite() )
 
         if(action==Qt::Key_BackSpace)
           {
-            if(eList.prev()->element!=0)
-              action=Qt::Key_Delete;
-            else
-              eList.next();
+              uint c = eList.at();
+              if(eList.prev()!=0) {
+                  if (eList.current()->element!=0)
+                      action=Qt::Key_Delete;
+              }
+              else
+                  eList.at(c);
           }
 
         if(action==Qt::Key_Delete)
@@ -573,14 +577,20 @@ if(!isReadWrite() )
 
             else
               {
-                if(eList.current()->pos==0)
-                  elReturn=FCOM_DELETEME;
-                else
-                  {
-                    if(eList.next()->element!=0)
+                  if(eList.current()->pos==0) {
                       elReturn=FCOM_DELETEME;
-                    else
-                      eList.prev();
+                  }
+                  else
+                  {
+                      // If you press `delete' in an empty document
+                      // there is no next pos.
+                      uint c = eList.at();
+                      if (eList.next()!=0) {
+                          if (eList.current()->element!=0)
+                              elReturn=FCOM_DELETEME;
+                      }
+                      else
+                          eList.at(c);
                   }
               }
           }



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic