[LyX/master] Make sure that top/bottom margins are visible when needed

Jean-Marc Lasgouttes lasgouttes at lyx.org
Fri Feb 12 17:31:51 UTC 2021


commit a78eb4471f2577cfa2fa89b27d27013c68937a17
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Feb 12 15:04:58 2021 +0100

    Make sure that top/bottom margins are visible when needed
    
    When the cursor is at the top, it is important to make sure that, not
    only its row is visible, but also the extra margin at the beginning of
    the document, that was added at 907f0207.
    
    Fixes part of bug #12123.
---
 src/BufferView.cpp |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index f7d0bbd..f23027c 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -959,8 +959,15 @@ bool BufferView::scrollToCursor(DocIterator const & dit, bool const recenter)
 		CursorSlice const & cs = dit.innerTextSlice();
 		int offset = coordOffset(dit).y_;
 		int ypos = pm.position() + offset;
-		Dimension const & row_dim =
-			pm.getRow(cs.pos(), dit.boundary()).dim();
+		Row const & row = pm.getRow(cs.pos(), dit.boundary());
+		Dimension row_dim = row.dim();
+		// FIXME: the will not be necessary anymore if Row has both a
+		// dim() which is its full dimension and a contentsDim() which
+		// is the dimension of the text only.
+		if (&row == &pm.rows().front())
+			row_dim.asc = pm.ascent();
+		if (&row == &pm.rows().back())
+			row_dim.des = pm.descent();
 		int scrolled = 0;
 		if (recenter)
 			scrolled = scroll(ypos - height_/2);


More information about the lyx-cvs mailing list