From a78eb4471f2577cfa2fa89b27d27013c68937a17 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 12 Feb 2021 15:04:58 +0100 Subject: [PATCH] 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 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/BufferView.cpp b/src/BufferView.cpp index f7d0bbd1f4..f23027c269 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); -- 2.39.2