[LyX/master] Improve Update::FitCursor when there is a selection

Jean-Marc Lasgouttes lasgouttes at lyx.org
Tue Jan 7 08:56:28 UTC 2020


commit 294969c6a2ba456c231e52d79b4637cdd50a6a95
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Jan 6 17:10:38 2020 +0100

    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.
---
 src/BufferView.cpp |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 4495093..eda08ed 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -527,7 +527,13 @@ void BufferView::processUpdateFlags(Update::flags flags)
 	// Then make sure that the screen contains the cursor if needed
 	if (flags & Update::FitCursor) {
 		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)
 			updateMetrics(flags);
 		}


More information about the lyx-cvs mailing list