]> git.lyx.org Git - lyx.git/blobdiff - src/TextMetrics.cpp
Avoid too much verbosity.
[lyx.git] / src / TextMetrics.cpp
index 2a74ddd1d797ab4788bcf30a3fe2edbe0a8ba507..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);
@@ -401,6 +416,7 @@ bool TextMetrics::redoParagraph(pit_type const pit)
        InsetList::const_iterator ii = par.insetList().begin();
        InsetList::const_iterator iend = par.insetList().end();
        for (; ii != iend; ++ii) {
+               // FIXME Doesn't this HAVE to be non-empty?
                // position already initialized?
                if (!parPos.empty()) {
                        parPos.pos() = ii->pos;
@@ -1495,7 +1511,7 @@ Inset * TextMetrics::editXY(Cursor & cur, int x, int y,
        // This should be just before or just behind the
        // cursor position set above.
        LASSERT(inset == inset_before 
-               || inset == pars[pit].getInset(pos), /**/);
+               || inset == pars[pit].getInset(pos), return 0);
 
        // Make sure the cursor points to the position before
        // this inset.