st = LyXText::NEED_MORE_REFRESH;
bv_->text->setCursor(bv_, bv_->text->cursor.par(),
bv_->text->cursor.pos());
+ if (bv_->text->selection.set()) {
+ bv_->text->setCursor(bv_, bv_->text->selection.start,
+ bv_->text->selection.start.par(),
+ bv_->text->selection.start.pos());
+ bv_->text->setCursor(bv_, bv_->text->selection.end,
+ bv_->text->selection.end.par(),
+ bv_->text->selection.end.pos());
+ }
fitc = true;
}
bv_->text->status(bv_, st);
* BufferView_pimpl.C (resizeCurrentBuffer): resize the insets before
reinitializing the buffer otherwise row-dimensions may be wrong.
+ (update): reset also the selection cursors if they do exits otherwise
+ their x/y positions may be wrong.
* text2.C (cursorDown): don't enter the inset if we came from a row
above and are one row over the inset.
2002-04-19 Juergen Vigna <jug@sad.it>
+ * insettext.C (draw): call a fullRebreak on the row where we had a
+ change and reset the cursor and selection-cursors.
+
* insettabular.C (insetUnlock):
(insetButtonPress): call an update before setting the_locking_inset = 0
as otherwise we don't repaint!
while ((row != 0) && (yf < ph)) {
lt->getVisibleRow(bv, y+y_offset+first, int(x), row,
y+lt->first_y, cleared);
+ if (bv->text->status() == LyXText::CHANGED_IN_DRAW) {
+ lt->need_break_row = row;
+ if (lt->fullRebreak(bv)) {
+ lt->setCursor(bv, lt->cursor.par(),lt->cursor.pos());
+ if (lt->selection.set()) {
+ lt->setCursor(bv, lt->selection.start,
+ lt->selection.start.par(),
+ lt->selection.start.pos());
+ lt->setCursor(bv, lt->selection.end,
+ lt->selection.end.par(),
+ lt->selection.end.pos());
+ }
+ }
+ break;
+ }
y += row->height();
yf += row->height();
row = row->next();