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.
This commit is contained in:
Jean-Marc Lasgouttes 2021-02-12 15:04:58 +01:00
parent 08a3405181
commit a78eb4471f

View 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);