Improve Update::FitCursor when there is a selection

It is better indeed to try to make the whole selection fit on screen.

Fixes bug #11012.
This commit is contained in:
Jean-Marc Lasgouttes 2020-01-06 17:10:38 +01:00
parent 191adc2fad
commit 294969c6a2

View File

@ -527,7 +527,13 @@ void BufferView::processUpdateFlags(Update::flags flags)
// Then make sure that the screen contains the cursor if needed // Then make sure that the screen contains the cursor if needed
if (flags & Update::FitCursor) { if (flags & Update::FitCursor) {
if (needsFitCursor()) { if (needsFitCursor()) {
scrollToCursor(d->cursor_, false); // First try to make the selection start visible
// (which is just the cursor when there is no selection)
scrollToCursor(d->cursor_.selectionBegin(), false);
// Is the cursor visible? (only useful if cursor is at end of selection)
if (needsFitCursor())
// then try to make cursor visible instead
scrollToCursor(d->cursor_, false);
// Metrics have to be recomputed (maybe again) // Metrics have to be recomputed (maybe again)
updateMetrics(flags); updateMetrics(flags);
} }