X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.C;h=01cfc41d8eef8fbf3e737869f29d0133340a3e2b;hb=e94889a041628203c50b66b9a4add63210de6928;hp=88f6ea25303a16963a7a076ec59765d28689bbec;hpb=d194cfffa5f68f425cff20770956f81c74cf9d0f;p=lyx.git diff --git a/src/BufferView.C b/src/BufferView.C index 88f6ea2530..01cfc41d8e 100644 --- a/src/BufferView.C +++ b/src/BufferView.C @@ -21,6 +21,7 @@ #include "bufferparams.h" #include "BufferView_pimpl.h" #include "CutAndPaste.h" +#include "coordcache.h" #include "debug.h" #include "funcrequest.h" #include "FuncStatus.h" @@ -44,7 +45,6 @@ #include "frontends/WorkArea.h" #include "insets/insetcommand.h" // ChangeRefs -#include "insets/updatableinset.h" #include "insets/insettext.h" using lyx::support::bformat; @@ -141,9 +141,9 @@ bool BufferView::fitCursor() } -void BufferView::update() +void BufferView::update(Update::flags flags) { - pimpl_->update(); + pimpl_->update(flags); } @@ -159,12 +159,6 @@ void BufferView::scrollDocView(int value) } -void BufferView::redoCurrentBuffer() -{ - pimpl_->redoCurrentBuffer(); -} - - bool BufferView::available() const { return pimpl_->available(); @@ -194,6 +188,10 @@ bool BufferView::isSavedPosition(unsigned int i) return pimpl_->isSavedPosition(i); } +void BufferView::saveSavedPositions() +{ + return pimpl_->saveSavedPositions(); +} void BufferView::switchKeyMap() { @@ -213,18 +211,6 @@ void BufferView::center() } -int BufferView::top_y() const -{ - return pimpl_->top_y(); -} - - -void BufferView::top_y(int y) -{ - pimpl_->top_y(y); -} - - string const BufferView::getClipboard() const { return pimpl_->workarea().getClipboard(); @@ -249,6 +235,36 @@ bool BufferView::dispatch(FuncRequest const & ev) } +void BufferView::selectionRequested() +{ + pimpl_->selectionRequested(); +} + + +void BufferView::selectionLost() +{ + pimpl_->selectionLost(); +} + + +void BufferView::workAreaResize() +{ + pimpl_->workAreaResize(); +} + + +void BufferView::workAreaKeyPress(LyXKeySymPtr key, key_modifier::state state) +{ + pimpl_->workAreaKeyPress(key, state); +} + + +bool BufferView::workAreaDispatch(FuncRequest const & ev) +{ + return pimpl_->workAreaDispatch(ev); +} + + void BufferView::scroll(int lines) { pimpl_->scroll(lines); @@ -258,7 +274,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(); @@ -292,9 +308,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.par(), it.pos()); - cursor().resetAnchor(); + setCursor(it); update(); return; } @@ -307,8 +321,7 @@ void BufferView::hideCursor() screen().hideCursor(); } - -LyXText * BufferView::getLyXText() const +LyXText * BufferView::getLyXText() { LyXText * text = cursor().innerText(); BOOST_ASSERT(text); @@ -316,6 +329,14 @@ LyXText * BufferView::getLyXText() const } +LyXText const * BufferView::getLyXText() const +{ + LyXText const * text = cursor().innerText(); + BOOST_ASSERT(text); + return text; +} + + void BufferView::haveSelection(bool sel) { pimpl_->workarea().haveSelection(sel); @@ -334,40 +355,66 @@ LyXText * BufferView::text() const } -void BufferView::setCursor(ParIterator const & par, lyx::pos_type pos) +void BufferView::setCursor(DocIterator const & dit) { - int const last = par.size(); - for (int i = 0; i < last; ++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; - par.bottom().text()->redoParagraph(par.bottom().par()); +} + + +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) { + cursor().pos() += length; cursor().setSelection(cursor(), -length); - DocIterator const it = cursor(); - cursor().setCursor(cursor().anchor_); - cursor().selection() = true; - cursor().anchor_ = it; } else cursor().setSelection(cursor(), length); } } +bool const BufferView::repaintAll() const +{ + return pimpl_->repaintAll(); +} + + +void const BufferView::repaintAll(bool r) const +{ + pimpl_->repaintAll(r); +} + + LCursor & BufferView::cursor() { return pimpl_->cursor_; @@ -378,3 +425,15 @@ LCursor const & BufferView::cursor() const { return pimpl_->cursor_; } + + +lyx::pit_type BufferView::anchor_ref() const +{ + return pimpl_->anchor_ref_; +} + + +int BufferView::offset_ref() const +{ + return pimpl_->offset_ref_; +}