From: Jean-Marc Lasgouttes Date: Fri, 30 Jan 2015 10:18:04 +0000 (+0100) Subject: Do not modify the changed() status of rows when no drawing has taken place X-Git-Tag: 2.2.0alpha1~1325 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=c6f8f51525f711fdb85b4ef3d41cb6ee391bb919;p=features.git Do not modify the changed() status of rows when no drawing has taken place There are several places in the code where a row is painted with drawing disabled in the painter. The goal is only to recompute inset positions. Such a case happens in BufferView::checkCursorScrollOffset, as part of the horizontal scrolling patch. It makes sens to consider that only a real painting of a row should change its status. However, I would not be surprised if this change would break other things. Fixes: #9388 --- diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index f29202c668..2119f8ed16 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -1878,7 +1878,8 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const } // Row signature; has row changed since last paint? - row.setCrc(pm.computeRowSignature(row, bparams)); + if (pi.pain.isDrawingEnabled()) + row.setCrc(pm.computeRowSignature(row, bparams)); bool row_has_changed = row.changed() || rowSlice == bv_->lastRowSlice(); @@ -1916,7 +1917,8 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const LYXERR(Debug::PAINTING, foreword << "pit=" << pit << " row=" << i << " row_selection=" << row.selection() << " full_repaint=" << pi.full_repaint - << " row_has_changed=" << row_has_changed); + << " row_has_changed=" << row_has_changed + << " drawingEnabled=" << pi.pain.isDrawingEnabled()); } // Backup full_repaint status and force full repaint