From: Allan Rae Date: Fri, 18 Jan 2002 03:50:19 +0000 (+0000) Subject: need_break_row was wrong in my earlier patches X-Git-Tag: 1.6.10~19982 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=37cfca3ed615023c2574a28c725098b815a4452e;p=features.git need_break_row was wrong in my earlier patches git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3413 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/ChangeLog b/src/ChangeLog index 975827fc00..05fb99924f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2002-01-18 Allan Rae + + * 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 * buffer.C (parseSingleLyXformat2Token): update because minipage diff --git a/src/text.C b/src/text.C index e74f249c78..296b9c49d5 100644 --- a/src/text.C +++ b/src/text.C @@ -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); diff --git a/src/text2.C b/src/text2.C index 5f07c509d6..e6b50a09c9 100644 --- a/src/text2.C +++ b/src/text2.C @@ -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