Fix the rebreak and cursor position if we had a CHANGED_IN_DRAW (fix #175).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4035 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Vigna 2002-04-19 14:16:08 +00:00
parent 19ba6786a9
commit 43ad9cf095
4 changed files with 28 additions and 0 deletions

View File

@ -1075,6 +1075,14 @@ void BufferView::Pimpl::update()
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);

View File

@ -2,6 +2,8 @@
* 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.

View File

@ -1,5 +1,8 @@
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!

View File

@ -465,6 +465,21 @@ void InsetText::draw(BufferView * bv, LyXFont const & f,
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();