// Constructor
LyXScreen::LyXScreen(WorkArea & o) //, LyXText * text_ptr)
- : owner(o) //, text(text_ptr)
+ : owner(o), force_clear(true) //, text(text_ptr)
{
// the cursor isnt yet visible
cursor_visible = false;
// y1 is now the real beginning of row on the screen
while (row != 0 && y < y2) {
- text->GetVisibleRow(owner.owner(), y+y_offset, x_offset, row, y + text->first);
+ LyXText::text_status st = text->status;
+ do {
+ text->status = st;
+ text->GetVisibleRow(owner.owner(), y+y_offset,
+ x_offset, row, y + text->first);
+ } while (text->status == LyXText::CHANGED_IN_DRAW);
+ text->status = st;
y += row->height();
row = row->next();
}
-
+ force_clear = false;
+
// maybe we have to clear the screen at the bottom
if ((y < y2) && text->bv_owner) {
owner.getPainter().fillRectangle(0, y,
if (y + row->height() > 0
&& y - row->height() <= long(owner.height())) {
// ok there is something visible
- text->GetVisibleRow(owner.owner(), y, x_offset, row, y + text->first);
+ LyXText::text_status st = text->status;
+ do {
+ text->status = st;
+ text->GetVisibleRow(owner.owner(), y, x_offset, row,
+ y + text->first);
+ } while (text->status == LyXText::CHANGED_IN_DRAW);
+ text->status = st;
}
+ force_clear = false;
}
owner.workWidth(), text->refresh_row->height());
}
break;
+ case LyXText::CHANGED_IN_DRAW: // just to remove the warning
case LyXText::UNCHANGED:
// Nothing needs done
break;
}
-void LyXScreen::ToggleSelection(LyXText * text, bool kill_selection)
+void LyXScreen::ToggleSelection(LyXText * text, bool kill_selection,
+ int y_offset, int x_offset)
{
// only if there is a selection
if (!text->selection) return;
if (kill_selection)
text->selection = 0;
- DrawFromTo(text, top - text->first, bottom - text->first);
+ DrawFromTo(text, top - text->first, bottom - text->first,
+ y_offset, x_offset);
expose(0, top - text->first,
owner.workWidth(),
bottom - text->first - (top - text->first));
bottom = min(max(ulong(bottom), text->first), text->first + owner.height());
top = min(max(ulong(top), text->first), text->first + owner.height());
-
+
DrawFromTo(text, top - text->first, bottom - text->first, y_offset,
x_offset);
expose(0, top - text->first, owner.workWidth(),