X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView_pimpl.C;h=2f4848f6a26f47929fb957b5495823bdbed27ce5;hb=e0660589c44ac5f3b2920be0db260fff58290b53;hp=163629c76a2be3a803e04dc8b1047fdf0bab7004;hpb=65e2f0f63d25d66d76d9d162330e9374ed3781b2;p=lyx.git diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 163629c76a..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(); + + // The new absolute coordinate + int new_first_y = t->first_y + lines * line_height; - double const diff = t->defaultHeight() - + double(time) * double(time) * 0.125; + // 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(int(diff)); + scrollDocView(new_first_y); + + // Update the scrollbar. workarea().setScrollbarParams(t->height, t->first_y, t->defaultHeight()); - return 0; } @@ -1119,8 +1126,11 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev) InsetCitation * inset = new InsetCitation(p); if (!insertInset(inset)) delete inset; - else + else { + inset->setLoadingBuffer(bv_->buffer(), false); updateInset(inset, true); + } + } break; @@ -1177,7 +1187,8 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev) case LFUN_CHILD_INSERT: { InsetInclude::Params p; - p.cparams.setFromString(ev.argument); + if (!ev.argument.empty()) + p.cparams.setFromString(ev.argument); p.masterFilename_ = buffer_->fileName(); InsetInclude * inset = new InsetInclude(p);