X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FCutAndPaste.cpp;h=9e7ddd31feaf3987bc393ec33b7fa572e48f2cd2;hb=faa87bf9f30b943397429a04254d96963bbf38bc;hp=ce6164d4ad09b2dbb251100e40eda5419d9e5aef;hpb=d9da8dc2c1b0a902996a6cc2edf703fe043c6fe1;p=lyx.git diff --git a/src/CutAndPaste.cpp b/src/CutAndPaste.cpp index ce6164d4ad..9e7ddd31fe 100644 --- a/src/CutAndPaste.cpp +++ b/src/CutAndPaste.cpp @@ -209,10 +209,8 @@ pasteSelectionHelper(DocIterator const & cur, ParagraphList const & parlist, if (tmpbuf->params().depth() > max_depth) tmpbuf->params().depth(max_depth); - // Only set this from the 2nd on as the 2nd depends - // for maxDepth still on pit. - if (tmpbuf != insertion.begin()) - max_depth = tmpbuf->getMaxDepthAfter(); + // Set max_depth for the next paragraph + max_depth = tmpbuf->getMaxDepthAfter(); // Set the inset owner of this paragraph. tmpbuf->setInsetOwner(target_inset); @@ -532,6 +530,8 @@ void putClipboard(ParagraphList const & paragraphs, OutputParams runparams(encodings.fromLyXName("utf8")); // We do not need to produce images, etc. runparams.dryrun = true; + // We are not interested in errors (bug 8866) + runparams.silent = true; buffer->writeLyXHTMLSource(oshtml, runparams, Buffer::FullSource); theClipboard().put(lyx, oshtml.str(), plaintext); @@ -1053,27 +1053,26 @@ void pasteParagraphList(Cursor & cur, ParagraphList const & parlist, } -void pasteFromStack(Cursor & cur, ErrorList & errorList, size_t sel_index) +bool pasteFromStack(Cursor & cur, ErrorList & errorList, size_t sel_index) { // this does not make sense, if there is nothing to paste if (!checkPastePossible(sel_index)) - return; + return false; cur.recordUndo(); pasteParagraphList(cur, theCuts[sel_index].first, theCuts[sel_index].second, errorList); + return true; } -void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs, +bool pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs, Clipboard::TextType type) { // Use internal clipboard if it is the most recent one // This overrides asParagraphs and type on purpose! - if (theClipboard().isInternal()) { - pasteFromStack(cur, errorList, 0); - return; - } + if (theClipboard().isInternal()) + return pasteFromStack(cur, errorList, 0); // First try LyX format if ((type == Clipboard::LyXTextType || @@ -1090,14 +1089,14 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs, cur.recordUndo(); pasteParagraphList(cur, buffer.paragraphs(), buffer.params().documentClassPtr(), errorList); - return; + return true; } } } // Then try TeX and HTML Clipboard::TextType types[2] = {Clipboard::HtmlTextType, Clipboard::LaTeXTextType}; - string names[2] = {"html", "latex"}; + string names[2] = {"html", "latexclipboard"}; for (int i = 0; i < 2; ++i) { if (type != types[i] && type != Clipboard::AnyTextType) continue; @@ -1119,11 +1118,14 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs, // Buffer buffer(string(), false); Buffer buffer("", false); buffer.setUnnamed(true); - if (buffer.importString(names[i], text, errorList)) { + available = buffer.importString(names[i], text, errorList); + if (available) + available = !buffer.paragraphs().empty(); + if (available && !buffer.paragraphs()[0].empty()) { cur.recordUndo(); pasteParagraphList(cur, buffer.paragraphs(), buffer.params().documentClassPtr(), errorList); - return; + return true; } } } @@ -1132,12 +1134,13 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs, // Then try plain text docstring const text = theClipboard().getAsText(Clipboard::PlainTextType); if (text.empty()) - return; + return false; cur.recordUndo(); if (asParagraphs) cur.text()->insertStringAsParagraphs(cur, text, cur.current_font); else cur.text()->insertStringAsLines(cur, text, cur.current_font); + return true; }