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
This commit is contained in:
Allan Rae 2002-01-18 03:50:19 +00:00
parent d8037e4bfd
commit 37cfca3ed6
3 changed files with 19 additions and 10 deletions

View 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

View 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);

View 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