X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.C;h=75544d062319dc9cb6f3d831b609f71f90ae4f23;hb=61133c4b5625993f600ffa7d209c3e2bc28d26f6;hp=2011ece20ad51217ba871759fcf7664667dd81e4;hpb=aa491cdb98f6e99827324c41fede08bb789d67c6;p=lyx.git diff --git a/src/BufferView.C b/src/BufferView.C index 2011ece20a..75544d0623 100644 --- a/src/BufferView.C +++ b/src/BufferView.C @@ -45,7 +45,6 @@ #include "frontends/WorkArea.h" #include "insets/insetcommand.h" // ChangeRefs -#include "insets/updatableinset.h" #include "insets/insettext.h" using lyx::support::bformat; @@ -142,9 +141,9 @@ bool BufferView::fitCursor() } -void BufferView::update(bool fitcursor, bool forceupdate) +void BufferView::update(Update::flags flags) { - pimpl_->update(fitcursor, forceupdate); + pimpl_->update(flags); } @@ -241,7 +240,7 @@ void BufferView::scroll(int lines) void BufferView::showErrorList(string const & action) const { if (getErrorList().size()) { - string const title = bformat(_("LyX: %1$s errors (%2$s)"), + string const title = bformat(_("%1$s Errors (%2$s)"), action, buffer()->fileName()); owner()->getDialogs().show("errorlist", title); pimpl_->errorlist_.clear(); @@ -275,9 +274,7 @@ void BufferView::gotoLabel(string const & label) vector labels; it->getLabelList(*buffer(), labels); if (find(labels.begin(),labels.end(),label) != labels.end()) { - cursor().clearSelection(); - text()->setCursor(cursor(), it.pit(), it.pos()); - cursor().resetAnchor(); + setCursor(it); update(); return; } @@ -324,24 +321,43 @@ LyXText * BufferView::text() const } -void BufferView::setCursor(ParIterator const & par, lyx::pos_type pos) +void BufferView::setCursor(DocIterator const & dit) { - for (int i = 0, n = par.depth(); i < n; ++i) - par[i].inset().edit(cursor(), true); + size_t const n = dit.depth(); + for (size_t i = 0; i < n; ++i) + dit[i].inset().edit(cursor(), true); - cursor().setCursor(makeDocIterator(par, pos)); + cursor().setCursor(dit); cursor().selection() = false; } +void BufferView::mouseSetCursor(LCursor & cur) +{ + BOOST_ASSERT(&cur.bv() == this); + + // Has the cursor just left the inset? + if (&cursor().inset() != &cur.inset()) + cursor().inset().notifyCursorLeaves(cursor()); + + // do the dEPM magic if needed + if (cursor().inTexted()) + cursor().text()->deleteEmptyParagraphMechanism(cur, cursor()); + + cursor() = cur; + cursor().clearSelection(); + cursor().setTargetX(); + finishUndo(); + +} + + void BufferView::putSelectionAt(DocIterator const & cur, int length, bool backwards) { - ParIterator par(cur); - cursor().clearSelection(); - setCursor(par, cur.pos()); + setCursor(cur); if (length) { if (backwards) {