X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCutAndPaste.cpp;h=3692dcc873fdaef55fdf95232feee7beb3b49513;hb=09df753df4c24470617c64d25eae6df2db85dfed;hp=5136df37df4b54f9e0987c813fbc81f780e52248;hpb=f7b1c86393d890d5d473279d88e26bb78f8c1275;p=lyx.git diff --git a/src/CutAndPaste.cpp b/src/CutAndPaste.cpp index 5136df37df..3692dcc873 100644 --- a/src/CutAndPaste.cpp +++ b/src/CutAndPaste.cpp @@ -19,12 +19,14 @@ #include "buffer_funcs.h" #include "BufferParams.h" #include "BufferView.h" +#include "Changes.h" #include "Cursor.h" #include "debug.h" #include "ErrorList.h" #include "FuncRequest.h" #include "gettext.h" #include "InsetIterator.h" +#include "InsetList.h" #include "Language.h" #include "lfuns.h" #include "LyXFunc.h" @@ -44,6 +46,7 @@ #include "mathed/InsetMath.h" #include "mathed/MathSupport.h" +#include "support/limited_stack.h" #include "support/lstrings.h" #include "frontends/Clipboard.h" @@ -193,7 +196,7 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist, // Set the inset owner of this paragraph. tmpbuf->setInsetOwner(pars[pit].inInset()); for (pos_type i = 0; i < tmpbuf->size(); ++i) { - if (tmpbuf->getChar(i) == Paragraph::META_INSET && + if (tmpbuf->isInset(i) && !pars[pit].insetAllowed(tmpbuf->getInset(i)->lyxCode())) // do not track deletion of invalid insets tmpbuf->eraseChar(i--, false); @@ -218,8 +221,8 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist, ParIterator fend = par_iterator_end(in); for (; fpit != fend; ++fpit) { - InsetList::const_iterator lit = fpit->insetlist.begin(); - InsetList::const_iterator eit = fpit->insetlist.end(); + InsetList::const_iterator lit = fpit->insetList().begin(); + InsetList::const_iterator eit = fpit->insetList().end(); for (; lit != eit; ++lit) { switch (lit->inset->lyxCode()) { @@ -374,8 +377,7 @@ void copySelectionHelper(Buffer const & buf, ParagraphList & pars, // This is invalid outside of ERT, so we need to change it // to the buffer language. if (it->ownerCode() == ERT_CODE || it->ownerCode() == LISTINGS_CODE) { - it->changeLanguage(buf.params(), latex_language, - buf.getLanguage()); + it->changeLanguage(buf.params(), latex_language, buf.language()); } it->setInsetOwner(0); } @@ -518,7 +520,7 @@ void cutSelection(Cursor & cur, bool doclear, bool realcut) saveSelection(cur); // make sure that the depth behind the selection are restored, too - recordUndoSelection(cur); + cur.recordUndoSelection(); pit_type begpit = cur.selBegin().pit(); pit_type endpit = cur.selEnd().pit(); @@ -566,11 +568,11 @@ void cutSelection(Cursor & cur, bool doclear, bool realcut) if (cur.selBegin().idx() != cur.selEnd().idx()) { // The current selection spans more than one cell. // Record all cells - recordUndoInset(cur); + cur.recordUndoInset(); } else { // Record only the current cell to avoid a jumping // cursor after undo - recordUndo(cur); + cur.recordUndo(); } if (realcut) copySelection(cur); @@ -733,7 +735,7 @@ void pasteFromStack(Cursor & cur, ErrorList & errorList, size_t sel_index) if (!checkPastePossible(sel_index)) return; - recordUndo(cur); + cur.recordUndo(); pasteParagraphList(cur, theCuts[sel_index].first, theCuts[sel_index].second, errorList); cur.setSelection(); @@ -757,7 +759,7 @@ void pasteClipboard(Cursor & cur, ErrorList & errorList, bool asParagraphs) Buffer buffer("", false); buffer.setUnnamed(true); if (buffer.readString(lyx)) { - recordUndo(cur); + cur.recordUndo(); pasteParagraphList(cur, buffer.paragraphs(), buffer.params().getTextClassPtr(), errorList); cur.setSelection(); @@ -770,7 +772,7 @@ void pasteClipboard(Cursor & cur, ErrorList & errorList, bool asParagraphs) docstring const text = theClipboard().getAsText(); if (text.empty()) return; - recordUndo(cur); + cur.recordUndo(); if (asParagraphs) cur.text()->insertStringAsParagraphs(cur, text); else @@ -782,7 +784,7 @@ void pasteSelection(Cursor & cur, ErrorList & errorList) { if (selectionBuffer.empty()) return; - recordUndo(cur); + cur.recordUndo(); pasteParagraphList(cur, selectionBuffer[0].first, selectionBuffer[0].second, errorList); } @@ -790,7 +792,7 @@ void pasteSelection(Cursor & cur, ErrorList & errorList) void replaceSelectionWithString(Cursor & cur, docstring const & str, bool backwards) { - recordUndo(cur); + cur.recordUndo(); DocIterator selbeg = cur.selectionBegin(); // Get font setting before we cut