From 43ad9cf095518462cf829fbc87bd0bed9040f8d5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Vigna?= Date: Fri, 19 Apr 2002 14:16:08 +0000 Subject: [PATCH] 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 --- src/BufferView_pimpl.C | 8 ++++++++ src/ChangeLog | 2 ++ src/insets/ChangeLog | 3 +++ src/insets/insettext.C | 15 +++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 2a6ad10609..93fdc9f075 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -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); diff --git a/src/ChangeLog b/src/ChangeLog index a37aa5c33f..b583b89fee 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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. diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 8b25ead5bc..0162a84c56 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,5 +1,8 @@ 2002-04-19 Juergen Vigna + * 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! diff --git a/src/insets/insettext.C b/src/insets/insettext.C index 4a7bf1f2e3..56eab7eafd 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -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(); -- 2.39.2