commit c6f8f51525f711fdb85b4ef3d41cb6ee391bb919
Author: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date:   Fri Jan 30 11:18:04 2015 +0100

    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 f29202c..2119f8e 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

Reply via email to