]> git.lyx.org Git - features.git/commitdiff
need_break_row was wrong in my earlier patches
authorAllan Rae <rae@lyx.org>
Fri, 18 Jan 2002 03:50:19 +0000 (03:50 +0000)
committerAllan Rae <rae@lyx.org>
Fri, 18 Jan 2002 03:50:19 +0000 (03:50 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3413 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/text.C
src/text2.C

index 975827fc0034c4708042a0f741e3f55ab97408a5..05fb99924fb6c16ef06269431c78d337c38bdc87 100644 (file)
@@ -1,3 +1,13 @@
+2002-01-18  Allan Rae  <rae@lyx.org>
+
+       * text2.C (removeRow): add comment.  Should other refresh_?? vars be
+       updated also?
+       
+       * text.C (drawInset): Turned out I didn't know enough about how 
+       rebreaking worked.  This fixes most of the redraw problems.  I see
+       an occasional cursor trail when a line is broken now and the cursor
+       placement can seem out by a few pixels also after a rebreak.
+
 2002-01-17  Jean-Marc Lasgouttes  <lasgouttes@freesurf.fr>
 
        * buffer.C (parseSingleLyXformat2Token): update because minipage
index e74f249c7865de081207abf0e6dc9ae23d3e18b7..296b9c49d5b2173d037c068896bc93b0e923adac 100644 (file)
@@ -476,24 +476,22 @@ void LyXText::drawInset(DrawRowParams & p, pos_type const pos)
        }
  
        LyXFont const & font = getFont(p.bv->buffer(), p.row->par(), pos);
+
        inset->update(p.bv, font, false);
        inset->draw(p.bv, font, p.yo + p.row->baseline(), p.x, p.cleared);
  
        if (!need_break_row && !inset_owner 
-               && p.bv->text->status() == CHANGED_IN_DRAW) {
+           && p.bv->text->status() == CHANGED_IN_DRAW) {
                Row * prev = p.row->previous();
                if (prev && prev->par() == p.row->par()) {
                        breakAgainOneRow(p.bv, prev);
-                       // breakAgainOneRow() may have removed p.row
-                       // What about the x and y coordinates? par & pos ok.
                        if (prev->next() != p.row) {
-                               p.row = prev;
+                               // breakAgainOneRow() has removed p.row
+                               p.row = 0;  // see what this breaks
+                               need_break_row = prev;
+                       } else {
+                               need_break_row = p.row;
                        }
-                       // If there's only one row (after p.row was deleted)
-                       // prev->next() == 0 and no breaking is required.
-                       // Otherwise, check the new next row.
-                       need_break_row = prev->next();
                } else {
                        need_break_row = p.row;
                }
@@ -1671,7 +1669,7 @@ void LyXText::breakAgainOneRow(BufferView * bview, Row * row)
                        row = row->next();
                        row->height(0);
                } else  {
-                       row= row->next();
+                       row = row->next();
                        ++z;
                        if (row->pos() != z)
                                row->pos(z);
index 5f07c509d66af0cf431ffde5260bc33802d97acc..e6b50a09c976767cb6ea86f82bd3e44d063d5db4 100644 (file)
@@ -404,6 +404,7 @@ void LyXText::removeRow(Row * row) const
        }
        if (refresh_row == row) {
                refresh_row = row_prev ? row_prev : row->next();
+               // what about refresh_y, refresh_height
        }
 
        height -= row->height(); // the text becomes smaller