Remove some redundant calls to updatePosCache

The setting of insets positions was done twice in updateMetrics.
When one of the paragraph is a huge branch, this can be very expensive.

This leads to a 17% improvement on updateMetrics time on a scrolling test.

Part of bug #12297
This commit is contained in:
Jean-Marc Lasgouttes 2023-07-24 15:35:16 +02:00
parent 9a96726bcd
commit d19ade9a61

View File

@ -3161,7 +3161,6 @@ void BufferView::updateMetrics(Update::flags & update_flags)
} }
} }
anchor_pm.setPosition(d->anchor_ypos_); anchor_pm.setPosition(d->anchor_ypos_);
tm.updatePosCache(d->anchor_pit_);
LYXERR(Debug::PAINTING, "metrics: " LYXERR(Debug::PAINTING, "metrics: "
<< " anchor pit = " << d->anchor_pit_ << " anchor pit = " << d->anchor_pit_
@ -3177,7 +3176,6 @@ void BufferView::updateMetrics(Update::flags & update_flags)
y1 -= pm.descent(); y1 -= pm.descent();
// Save the paragraph position in the cache. // Save the paragraph position in the cache.
pm.setPosition(y1); pm.setPosition(y1);
tm.updatePosCache(pit1);
y1 -= pm.ascent(); y1 -= pm.ascent();
} }
@ -3191,7 +3189,6 @@ void BufferView::updateMetrics(Update::flags & update_flags)
y2 += pm.ascent(); y2 += pm.ascent();
// Save the paragraph position in the cache. // Save the paragraph position in the cache.
pm.setPosition(y2); pm.setPosition(y2);
tm.updatePosCache(pit2);
y2 += pm.descent(); y2 += pm.descent();
} }