]> git.lyx.org Git - lyx.git/blobdiff - src/TextMetrics.cpp
cosmetics
[lyx.git] / src / TextMetrics.cpp
index a99589a2a7cf1314a33483cd036dde86e725bd60..bc74d71efe4069e67d15d0d96bf46d08c0bb8d74 100644 (file)
@@ -40,6 +40,7 @@
 #include "ParIterator.h"
 #include "rowpainter.h"
 #include "Text.h"
+#include "TextClass.h"
 #include "VSpace.h"
 
 #include "mathed/MacroTable.h"
@@ -1925,6 +1926,8 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type pit, int x, int y) co
 
        Bidi bidi;
 
+       bool const original_drawing_state = pi.pain.isDrawingEnabled();
+
        y -= rb->ascent();
        for (RowList::const_iterator rit = rb; rit != re; ++rit) {
                y += rit->ascent();
@@ -1932,7 +1935,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type pit, int x, int y) co
                bool const inside = (y + rit->descent() >= 0
                        && y - rit->ascent() < ww);
                // it is not needed to draw on screen if we are not inside.
-               pi.pain.setDrawingEnabled(inside);
+               pi.pain.setDrawingEnabled(inside && original_drawing_state);
                RowPainter rp(pi, *text_, pit, *rit, bidi, x, y);
 
                // Row signature; has row changed since last paint?
@@ -1998,7 +2001,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type pit, int x, int y) co
                pi.full_repaint = tmp;
        }
        // Re-enable screen drawing for future use of the painter.
-       pi.pain.setDrawingEnabled(true);
+       pi.pain.setDrawingEnabled(original_drawing_state);
 
        //LYXERR(Debug::PAINTING) << "." << endl;
 }