]> git.lyx.org Git - features.git/blobdiff - src/TextMetrics.cpp
Revert "Don't asssert on (too) deeply nested items"
[features.git] / src / TextMetrics.cpp
index f22716435780149ce0b684469753043ba8452c07..53b683861f0d14d1dc9f21f179eb14ee81c676fd 100644 (file)
@@ -916,10 +916,10 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
                        // ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
                        // ¶ U+00B6 PILCROW SIGN
                        char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
-                       row.add(i, screen_char, *fi, par.lookupChange(i), i >= body_pos);
+                       row.add(i, screen_char, *fi, par.lookupChange(i));
                } else
                        // row elements before body are unbreakable
-                       row.add(i, c, *fi, par.lookupChange(i), i >= body_pos);
+                       row.add(i, c, *fi, par.lookupChange(i));
 
                // add inline completion width
                // draw logically behind the previous character
@@ -1202,7 +1202,10 @@ int TextMetrics::parTopSpacing(pit_type const pit) const
            && prevpar.getLabelWidthString() == par.getLabelWidthString()) {
                layoutasc = layout.itemsep * dh;
        } else if (pit != 0 && layout.topsep > 0)
-               layoutasc = layout.topsep * dh;
+               // combine the separation between different layouts (with same depth)
+               layoutasc = max(0.0,
+                       prevpar.getDepth() != par.getDepth() ? layout.topsep
+                       : layout.topsep - prevpar.layout().bottomsep) * dh;
 
        asc += int(layoutasc * 2 / (2 + pars[pit].getDepth()));
 
@@ -2039,9 +2042,9 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const
                // already cleared because of a full repaint.
                if (!pi.full_repaint && row.changed()) {
                        LYXERR(Debug::PAINTING, "Clear rect@("
-                              << max(row_x, 0) << ", " << y - row.ascent() << ")="
+                              << x << ", " << y - row.ascent() << ")="
                               << width() << " x " << row.height());
-                       pi.pain.fillRectangle(row_x, y - row.ascent(),
+                       pi.pain.fillRectangle(x, y - row.ascent(),
                                              width(), row.height(), pi.background_color);
                }