X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCutAndPaste.C;h=af8912c0fdb78b3f5f791c07f3100d3440f25f78;hb=87cd77d1fc819bc8f14982fc6b20091720c011f5;hp=f9c2ca623b45abe6fa494f00b4f6de5eaacdce75;hpb=c9f9ba315c8e475ad47c64fef6c9c755dea3d55c;p=lyx.git diff --git a/src/CutAndPaste.C b/src/CutAndPaste.C index f9c2ca623b..af8912c0fd 100644 --- a/src/CutAndPaste.C +++ b/src/CutAndPaste.C @@ -114,6 +114,22 @@ pasteSelectionHelper(Buffer const & buffer, ParagraphList & pars, // Now remove all out of the pars which is NOT allowed in the // new environment and set also another font if that is required. + // Convert newline to paragraph break in ERT inset. + // This should not be here! + if (pars[pit].inInset() && + pars[pit].inInset()->lyxCode() == InsetBase::ERT_CODE) { + for (ParagraphList::size_type i = 0; i < insertion.size(); ++i) { + for (pos_type j = 0; j < insertion[i].size(); ++j) { + if (insertion[i].isNewline(j)) { + insertion[i].erase(j); + breakParagraphConservative( + buffer.params(), + insertion, i, j); + } + } + } + } + // Make sure there is no class difference. lyx::cap::SwitchLayoutsBetweenClasses(textclass, tc, insertion, errorlist); @@ -145,10 +161,9 @@ pasteSelectionHelper(Buffer const & buffer, ParagraphList & pars, // 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 (!pars[pit].insetAllowed(tmpbuf->getInset(i)->lyxCode())) - tmpbuf->erase(i--); - } + if (tmpbuf->getChar(i) == Paragraph::META_INSET && + !pars[pit].insetAllowed(tmpbuf->getInset(i)->lyxCode())) + tmpbuf->erase(i--); } } @@ -488,7 +503,7 @@ void cutSelection(LCursor & cur, bool doclear, bool realcut) // need a valid cursor. (Lgb) cur.clearSelection(); - text->updateCounters(); + updateCounters(cur.buffer()); } if (cur.inMathed()) { @@ -581,7 +596,7 @@ void pasteSelection(LCursor & cur, size_t sel_index) cur.resetAnchor(); text->setCursor(cur, ppp.first, ppp.second); cur.setSelection(); - text->updateCounters(); + updateCounters(cur.buffer()); } if (cur.inMathed()) { @@ -666,7 +681,7 @@ void eraseSelection(LCursor & cur) for (InsetBase::col_type col = c1; col <= c2; ++col) p->cell(p->index(row, col)).clear(); } - cur.back() = i1; + cur.top() = i1; cur.pos() = 0; // We've deleted the whole cell. Only pos 0 is valid. cur.resetAnchor(); } else {