#include "insets/insetbib.h"
#include "insets/insettext.h"
-#include "insets/inseturl.h"
#include "insets/insetlatexaccent.h"
#include "insets/insettoc.h"
#include "insets/insetindex.h"
{
lyxerr[Debug::GUI] << "scrollDocView of " << value << endl;
- if (!buffer_) return;
+ if (!buffer_)
+ return;
screen().draw(bv_->text, bv_, value);
- if (!lyxrc.cursor_follows_scrollbar) {
+ if (!lyxrc.cursor_follows_scrollbar)
return;
- }
LyXText * vbt = bv_->text;
}
-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;
}
<< " button[" << ev.button() << "]"
<< endl;
+ // e.g. Qt mouse press when no buffer
+ if (!buffer_)
+ return false;
+
LyXTextClass const & tclass = buffer_->params.getLyXTextClass();
switch (ev.action) {
}
break;
- case LFUN_HTMLURL:
- case LFUN_URL:
- {
- InsetCommandParams p;
- if (ev.action == LFUN_HTMLURL)
- p.setCmdName("htmlurl");
- else
- p.setCmdName("url");
- owner_->getDialogs().createUrl(p.getAsString());
- }
- break;
-
- case LFUN_INSERT_URL:
- {
- InsetCommandParams p;
- p.setFromString(ev.argument);
-
- InsetUrl * inset = new InsetUrl(p);
- if (!insertInset(inset))
- delete inset;
- else
- updateInset(inset, true);
- }
- break;
-
-
// --- accented characters ---------------------------
case LFUN_UMLAUT:
InsetCitation * inset = new InsetCitation(p);
if (!insertInset(inset))
delete inset;
- else
+ else {
+ inset->setLoadingBuffer(bv_->buffer(), false);
updateInset(inset, true);
+ }
+
}
break;
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);
// inset there otherwise this is a illegal function now
if (bv_->theLockingInset()) {
if (bv_->theLockingInset()->insetAllowed(inset))
- return bv_->theLockingInset()->insertInset(bv_, inset);
+ return bv_->theLockingInset()->insertInset(bv_, inset);
return false;
}