Fix bug #6141: Scrolling error with insets at top of file.

Fix the regression introduced in r28397 while fixing bug #5573.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34296 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2010-04-26 14:57:27 +00:00
parent d2cc4a5b92
commit 87623ff478

View File

@ -874,10 +874,22 @@ bool BufferView::scrollToCursor(DocIterator const & dit, bool recenter)
int scrolled = 0;
if (recenter)
scrolled = scroll(ypos - height_/2);
// If the top part of the row falls of the screen, we scroll
// up to align the top of the row with the top of the screen.
else if (ypos - row_dim.ascent() < 0)
scrolled = scrollUp(- ypos + row_dim.ascent());
else if (ypos + row_dim.descent() > height_)
scrolled = scrollDown(ypos - height_ + defaultRowHeight() );
scrolled = scrollUp(-ypos + row_dim.ascent());
// If the bottom of the row falls of the screen, we scroll down.
// However, we have to be careful not to scroll that much that
// the top falls of the screen.
else if (ypos + row_dim.descent() > height_) {
int ynew = height_ - row_dim.descent();
if (ynew < row_dim.ascent())
ynew = row_dim.ascent();
int const scroll = ypos - ynew;
scrolled = scrollDown(scroll);
}
// else, nothing to do, the cursor is already visible so we just return.
return scrolled != 0;