]> git.lyx.org Git - features.git/commitdiff
Make sure that top/bottom margins are visible when needed
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 12 Feb 2021 14:04:58 +0000 (15:04 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 12 Feb 2021 17:35:07 +0000 (18:35 +0100)
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

index f7d0bbd1f4c28807f86d256c8f475b6b7c267f57..f23027c269a3af011a6a125ca3f9aaeeb857c69b 100644 (file)
@@ -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);