From: Richard Heck Date: Wed, 11 May 2011 12:59:39 +0000 (+0000) Subject: Fix bugs #7110 and #7160 by reverting r36521. X-Git-Tag: 2.0.1~320 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=0ecdd259d9aa22fb3f9dc15094a670a0fb9af69e;p=features.git Fix bugs #7110 and #7160 by reverting r36521. This was an attempt to fix #2743 without re-working the InsetBibitem mess. It didn't work, so we have to do that. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@38703 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 778da312a7..ecc9e52194 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -375,6 +375,21 @@ bool TextMetrics::redoParagraph(pit_type const pit) main_text_ = (text_ == &buffer.text()); bool changed = false; + // FIXME: This check ought to be done somewhere else. It is the reason + // why text_ is not const. But then, where else to do it? + // Well, how can you end up with either (a) a biblio environment that + // has no InsetBibitem or (b) a biblio environment with more than one + // InsetBibitem? I think the answer is: when paragraphs are merged; + // when layout is set; when material is pasted. + int const moveCursor = par.checkBiblio(buffer); + if (moveCursor > 0) + const_cast(bv_->cursor()).posForward(); + else if (moveCursor < 0) { + Cursor & cursor = const_cast(bv_->cursor()); + if (cursor.pos() >= -moveCursor) + cursor.posBackward(); + } + // Optimisation: this is used in the next two loops // so better to calculate that once here. int const right_margin = rightMargin(pm); diff --git a/src/frontends/qt4/GuiApplication.cpp b/src/frontends/qt4/GuiApplication.cpp index dd6b7f22c0..fa31c5c468 100644 --- a/src/frontends/qt4/GuiApplication.cpp +++ b/src/frontends/qt4/GuiApplication.cpp @@ -1103,26 +1103,9 @@ void GuiApplication::dispatch(FuncRequest const & cmd) BufferView * bv = current_view_->currentBufferView(); if (bv) { - Cursor & cursor = bv->cursor(); - Buffer & buf = bv->buffer(); - - // FIXME - // This check out to be done somewhere else. It got moved here - // from TextMetrics.cpp, where it definitely didn't need to be. - // Actually, this test ought not to be done at all, since the - // whole InsetBibitem business is a mess. But that is a different - // story. - int moveCursor = 0; - if (cursor.inTexted()) { - moveCursor = cursor.paragraph().checkBiblio(buf); - if (moveCursor > 0) - cursor.posForward(); - else if (moveCursor < 0 && cursor.pos() >= -moveCursor) - cursor.posBackward(); - } - if (moveCursor != 0 || dr.needBufferUpdate()) { - cursor.clearBufferUpdate(); - buf.updateBuffer(); + if (dr.needBufferUpdate()) { + bv->cursor().clearBufferUpdate(); + bv->buffer().updateBuffer(); } // BufferView::update() updates the ViewMetricsInfo and // also initializes the position cache for all insets in