X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView_pimpl.C;h=2f4848f6a26f47929fb957b5495823bdbed27ce5;hb=e0660589c44ac5f3b2920be0db260fff58290b53;hp=36b457694f4eb61e7f5646d2e817fb40cee6e764;hpb=2ed6872ad5c59e43f92aedad9df9e669468938c4;p=lyx.git diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 36b457694f..2f4848f6a2 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -384,19 +384,26 @@ void BufferView::Pimpl::scrollDocView(int value) } -int BufferView::Pimpl::scroll(long time) +void BufferView::Pimpl::scroll(int lines) { - if (!buffer_) - return 0; + if (!buffer_) { + return; + } LyXText const * t = bv_->text; + int const line_height = t->defaultHeight(); - double const diff = t->defaultHeight() - + double(time) * double(time) * 0.125; + // The new absolute coordinate + int new_first_y = t->first_y + lines * line_height; - scrollDocView(int(diff)); + // Restrict to a valid value + new_first_y = std::min(t->height - 4 * line_height, new_first_y); + new_first_y = std::max(0, new_first_y); + + scrollDocView(new_first_y); + + // Update the scrollbar. workarea().setScrollbarParams(t->height, t->first_y, t->defaultHeight()); - return 0; }