diff --git a/src/frontends/xforms/xscreen.C b/src/frontends/xforms/xscreen.C index c917944ad3..3ad462e4e8 100644 --- a/src/frontends/xforms/xscreen.C +++ b/src/frontends/xforms/xscreen.C @@ -173,12 +173,11 @@ void XScreen::expose(int x, int y, int w, int h) void XScreen::draw(LyXText * text, BufferView * bv, unsigned int y) { - int const old_first = text->top_y(); text->top_y(y); // make a dumb new-draw - drawFromTo(text, bv, 0, owner_.workHeight(), 0, 0); - expose(0, 0, owner_.workWidth(), owner_.workHeight()); + //drawFromTo(text, bv, 0, owner_.workHeight(), 0, 0); + //expose(0, 0, owner_.workWidth(), owner_.workHeight()); XSync(fl_get_display(), 0); } diff --git a/src/text2.C b/src/text2.C index bf67799b0e..b86338ad45 100644 --- a/src/text2.C +++ b/src/text2.C @@ -559,9 +559,10 @@ void LyXText::redoParagraph(ParagraphList::iterator pit) RowList::iterator end = pit->rows.end(); // remove rows of paragraph - for ( ; rit != end; ++rit) { + int anchor_cnt = -1; + for (int i = 0; rit != end; ++rit, ++i) { if (rit == anchor_row_) - anchor_row_ = endRow(); + anchor_cnt = i; height -= rit->height(); } pit->rows.clear(); @@ -588,6 +589,13 @@ void LyXText::redoParagraph(ParagraphList::iterator pit) setHeightOfRow(pit, tmprow); } + if (anchor_cnt == -1) { + if (anchor_cnt >= pit->rows.size()) + anchor_cnt = pit->rows.size(); + anchor_row_ = pit->rows.begin(); + advance(anchor_row_, anchor_cnt); + } + //lyxerr << "redoParagraph: " << pit->rows.size() << " rows\n"; }