d->scrollbarParameters_.position = 0;
// The reference is the top position so we remove one page.
- d->scrollbarParameters_.max -= d->scrollbarParameters_.page_step;
+ if (lyxrc.scroll_below_document)
+ d->scrollbarParameters_.max -= minVisiblePart();
+ else
+ d->scrollbarParameters_.max -= d->scrollbarParameters_.page_step;
}
}
+int BufferView::minVisiblePart()
+{
+ return 2 * defaultRowHeight();
+}
+
+
int BufferView::scroll(int y)
{
if (y > 0)
{
Text * text = &buffer_.text();
TextMetrics & tm = d->text_metrics_[text];
- int ymax = height_ + offset;
+ int const ymax = height_ + offset;
while (true) {
pair<pit_type, ParagraphMetrics const *> last = tm.last();
int bottom_pos = last.second->position() + last.second->descent();
+ if (lyxrc.scroll_below_document)
+ bottom_pos += height_ - minVisiblePart();
if (last.first + 1 == int(text->paragraphs().size())) {
if (bottom_pos <= height_)
return 0;