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
This commit is contained in:
Jean-Marc Lasgouttes 2015-01-30 11:18:04 +01:00 committed by Scott Kostyshak
parent fdf41cfdd4
commit c6f8f51525

View File

@ -1878,6 +1878,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const
} }
// Row signature; has row changed since last paint? // Row signature; has row changed since last paint?
if (pi.pain.isDrawingEnabled())
row.setCrc(pm.computeRowSignature(row, bparams)); row.setCrc(pm.computeRowSignature(row, bparams));
bool row_has_changed = row.changed() bool row_has_changed = row.changed()
|| rowSlice == bv_->lastRowSlice(); || 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 LYXERR(Debug::PAINTING, foreword << "pit=" << pit << " row=" << i
<< " row_selection=" << row.selection() << " row_selection=" << row.selection()
<< " full_repaint=" << pi.full_repaint << " 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 // Backup full_repaint status and force full repaint