Long shot in a small patch.

This completely disables InsetText::update and InsetTabular::update.
It looks as if it works, though.

Please test.

Andre'

-- 
Those who desire to give up Freedom in order to gain Security, will not have,
nor do they deserve, either one.     (T. Jefferson or B. Franklin or both...)
Index: lyxtext.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxtext.h,v
retrieving revision 1.190
diff -u -p -r1.190 lyxtext.h
--- lyxtext.h   16 Jul 2003 08:42:24 -0000      1.190
+++ lyxtext.h   16 Jul 2003 10:42:00 -0000
@@ -163,6 +163,8 @@ public:
        void partialRebreak();
        /// a full rebreak of the whole text
        void fullRebreak();
+       /// rebuild RowList cache
+       void rebuild();
 
        ///
        RowList::iterator need_break_row;
Index: rowpainter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/rowpainter.C,v
retrieving revision 1.23
diff -u -p -r1.23 rowpainter.C
--- rowpainter.C        15 Jul 2003 11:08:00 -0000      1.23
+++ rowpainter.C        16 Jul 2003 10:42:00 -0000
@@ -179,7 +179,7 @@ void RowPainter::paintInset(pos_type con
        Assert(inset);
 
 #warning inset->update FIXME
-       inset->update(perv(bv_), false);
+       //inset->update(perv(bv_), false);
 
        PainterInfo pi(perv(bv_));
        pi.base.font = getFont(pos);
Index: text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.389
diff -u -p -r1.389 text2.C
--- text2.C     16 Jul 2003 08:42:26 -0000      1.389
+++ text2.C     16 Jul 2003 10:42:00 -0000
@@ -692,6 +692,32 @@ void LyXText::fullRebreak()
 }
 
 
+void LyXText::rebuild()
+{
+       rowlist_.clear();
+       need_break_row = rows().end();
+       width = height = 0;
+
+       anchor_row_ = rows().end();
+       anchor_row_offset_ = 0;
+
+       ParagraphList::iterator pit = ownerParagraphs().begin();
+       ParagraphList::iterator end = ownerParagraphs().end();
+
+       //current_font = getFont(bview->buffer(), pit, 0);
+
+       for (; pit != end; ++pit)
+               insertParagraph(pit, rowlist_.end());
+
+       //setCursorIntern(rowlist_.begin()->par(), 0);
+       //selection.cursor = cursor;
+
+       //updateCounters();
+
+       //setCursorIntern(cursor.par(), cursor.pos());
+}
+
+
 void LyXText::partialRebreak()
 {
        if (rows().empty()) {
@@ -1516,6 +1542,8 @@ void LyXText::setCursor(LyXCursor & cur,
        cur.par(pit);
        cur.pos(pos);
        cur.boundary(boundary);
+       if (rows().empty())
+               return;
 
        // get the cursor y position in text
        int y = 0;
Index: insets/insettabular.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettabular.C,v
retrieving revision 1.297
diff -u -p -r1.297 insettabular.C
--- insets/insettabular.C       15 Jul 2003 16:25:02 -0000      1.297
+++ insets/insettabular.C       16 Jul 2003 10:42:00 -0000
@@ -259,6 +259,7 @@ void InsetTabular::read(Buffer const * b
 void InsetTabular::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        if (mi.base.bv) {
+               calculate_dimensions_of_cells(mi.base.bv, true);
                //lyxerr << "InsetTabular::metrics, bv: " << mi.base.bv << endl;
                for (int i = 0; i < tabular.getNumberOfCells(); ++i) {
                        tabular.cellinfo_of_cell(i)->inset.text_.bv_owner = mi.base.bv;
@@ -411,6 +412,7 @@ void InsetTabular::drawCellSelection(Pai
 
 void InsetTabular::update(BufferView * bv, bool reinit)
 {
+/*
        if (in_update) {
                if (reinit) {
                        resetPos(bv);
@@ -447,6 +449,7 @@ void InsetTabular::update(BufferView * b
                break;
        }
        in_update = false;
+*/
 }
 
 
Index: insets/insettext.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettext.C,v
retrieving revision 1.431
diff -u -p -r1.431 insettext.C
--- insets/insettext.C  16 Jul 2003 07:15:10 -0000      1.431
+++ insets/insettext.C  16 Jul 2003 10:42:01 -0000
@@ -277,6 +277,7 @@ void InsetText::metrics(MetricsInfo & mi
 {
        BufferView * bv = mi.base.bv;
        setViewCache(bv);
+       text_.rebuild();
        dim.asc = text_.rows().begin()->ascent_of_text() + TEXT_TO_INSET_OFFSET;
        dim.des = text_.height - dim.asc + TEXT_TO_INSET_OFFSET;
        dim.wid = max(textWidth(bv), int(text_.width)) + 2 * TEXT_TO_INSET_OFFSET;
@@ -406,6 +407,7 @@ void InsetText::update(BufferView * bv, 
 {
        setViewCache(bv);
 
+/*
        if (in_update) {
                if (reinit && owner()) {
                        reinitLyXText();
@@ -455,6 +457,7 @@ void InsetText::update(BufferView * bv, 
                need_update |= INIT;
                old_max_width = nw;
        }
+*/
 }
 
 
@@ -884,7 +887,7 @@ Inset::RESULT InsetText::localDispatch(F
 
                if (cmd.argument.size()) {
                        if (cmd.argument == "left")
-                               text_.setCursor(paragraphs.begin(), 0);
+                               text_.setCursorIntern(paragraphs.begin(), 0);
                        else {
                                ParagraphList::iterator it = paragraphs.begin();
                                ParagraphList::iterator end = paragraphs.end();

Reply via email to