]> git.lyx.org Git - lyx.git/blobdiff - src/TextMetrics.cpp
* de/UserGuide: some translation work.
[lyx.git] / src / TextMetrics.cpp
index 72506bb420885f35e4c55ce8213969f78e2db23c..4ca0592e74fa8e7779c2c9561b34d8ba077735f9 100644 (file)
@@ -313,6 +313,9 @@ bool TextMetrics::isRTLBoundary(pit_type pit, pos_type pos) const
 }
 
 
+// isRTLBoundary returns false on a real end-of-line boundary,
+// because otherwise the two boundary types get mixed up.
+// This is the whole purpose of this being in TextMetrics.
 bool TextMetrics::isRTLBoundary(pit_type pit, pos_type pos,
                Font const & font) const
 {
@@ -371,21 +374,6 @@ 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);
@@ -408,8 +396,6 @@ bool TextMetrics::redoParagraph(pit_type const pit)
        }
 
        // redo insets
-       // FIXME: We should always use getFont(), see documentation of
-       // noFontChange() in Inset.h.
        Font const bufferfont = buffer.params().getFont();
        InsetList::const_iterator ii = par.insetList().begin();
        InsetList::const_iterator iend = par.insetList().end();
@@ -430,8 +416,8 @@ bool TextMetrics::redoParagraph(pit_type const pit)
                Dimension dim;
                int const w = max_width_ - leftMargin(max_width_, pit, ii->pos)
                        - right_margin;
-               Font const & font = ii->inset->noFontChange() ?
-                       bufferfont : displayFont(pit, ii->pos);
+               Font const & font = ii->inset->inheritFont() ?
+                       displayFont(pit, ii->pos) : bufferfont;
                MacroContext mc(&buffer, parPos);
                MetricsInfo mi(bv_, font.fontInfo(), w, mc);
                ii->inset->metrics(mi, dim);
@@ -2004,7 +1990,7 @@ int TextMetrics::leftMargin(int max_width,
               || (layout.labeltype == LABEL_STATIC
                   && layout.latextype == LATEX_ENVIRONMENT
                   && !text_->isFirstInSequence(pit)))
-           && align == LYX_ALIGN_BLOCK
+           && (align == LYX_ALIGN_BLOCK || align == LYX_ALIGN_LEFT)
            && !par.params().noindent()
            // in some insets, paragraphs are never indented
            && !text_->inset().neverIndent()