From c6f8f51525f711fdb85b4ef3d41cb6ee391bb919 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 30 Jan 2015 11:18:04 +0100 Subject: [PATCH] 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 --- src/TextMetrics.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 -- 2.39.5