]> git.lyx.org Git - features.git/commitdiff
Fix bugs #7110 and #7160 by reverting r36521.
authorRichard Heck <rgheck@comcast.net>
Wed, 11 May 2011 12:59:39 +0000 (12:59 +0000)
committerRichard Heck <rgheck@comcast.net>
Wed, 11 May 2011 12:59:39 +0000 (12:59 +0000)
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

src/TextMetrics.cpp
src/frontends/qt4/GuiApplication.cpp

index 778da312a714a3af675b44fc90f37e6d9bdf8b65..ecc9e5219487d3015fde15ecb0d6aaf336fcb139 100644 (file)
@@ -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<Cursor &>(bv_->cursor()).posForward();
+       else if (moveCursor < 0) {
+               Cursor & cursor = const_cast<Cursor &>(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);
index dd6b7f22c0d2c62e9237d89232c430e863b2eaad..fa31c5c4684cc7466a112a7c59f14c880d0b2979 100644 (file)
@@ -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