X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCutAndPaste.cpp;h=ecb4cbcafbaddca26dd6d71779a35775eea70975;hb=4df7d8ab1ae443119057562fb76c2e438c053eef;hp=6ecc49a4aa138a0075ff752dab43628c58ff58d4;hpb=13525928749f36ea5789bab6b8604721c64963c8;p=lyx.git diff --git a/src/CutAndPaste.cpp b/src/CutAndPaste.cpp index 6ecc49a4aa..ecb4cbcafb 100644 --- a/src/CutAndPaste.cpp +++ b/src/CutAndPaste.cpp @@ -431,14 +431,16 @@ void copySelectionHelper(Buffer const & buf, ParagraphList const & pars, // ERT paragraphs have the Language latex_language. // 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) { + if (it->ownerCode() == ERT_CODE || it->ownerCode() == LISTINGS_CODE) it->changeLanguage(buf.params(), latex_language, buf.language()); - } + it->setInsetOwner(0); } - // do not copy text (also nested in insets) which is marked as deleted - acceptChanges(copy_pars, buf.params()); + // do not copy text (also nested in insets) which is marked as deleted, + // unless the whole selection was deleted + if (!isFullyDeleted(copy_pars)) + acceptChanges(copy_pars, buf.params()); DocumentClass * d = const_cast(dc); cutstack.push(make_pair(copy_pars, d)); @@ -740,7 +742,11 @@ void copySelectionToStack(Cursor const & cur, CutStack & cutstack) copySelectionHelper(*cur.buffer(), pars, par, cur.selEnd().pit(), pos, cur.selEnd().pos(), cur.buffer()->params().documentClassPtr(), cutstack); - dirtyTabularStack(false); + + // Reset the dirty_tabular_stack_ flag only when something + // is copied to the clipboard (not to the selectionBuffer). + if (&cutstack == &theCuts) + dirtyTabularStack(false); } if (cur.inMathed()) {