[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