X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FCutAndPaste.cpp;h=1f4633008774d4a66f043b933d9cc7fc8cb5b1c8;hb=02e59530b15d223c0978ecacfb7379f7bec986f4;hp=35e7f748a00fd6bf2b2eb0d629241d91110ae464;hpb=e115b006e666cf81d801c224ef36cc9abe272223;p=lyx.git diff --git a/src/CutAndPaste.cpp b/src/CutAndPaste.cpp index 35e7f748a0..1f46330087 100644 --- a/src/CutAndPaste.cpp +++ b/src/CutAndPaste.cpp @@ -110,7 +110,8 @@ struct PasteReturnValue { PasteReturnValue pasteSelectionHelper(DocIterator const & cur, ParagraphList const & parlist, - DocumentClassConstPtr oldDocClass, ErrorList & errorlist) + DocumentClassConstPtr oldDocClass, Buffer * tmpbuffer, + ErrorList & errorlist) { Buffer const & buffer = *cur.buffer(); pit_type pit = cur.pit(); @@ -352,15 +353,21 @@ pasteSelectionHelper(DocIterator const & cur, ParagraphList const & parlist, || (is_child && (branchlist.find(name) || buffer.masterBuffer()->params().branchlist().find(name)))) break; - // FIXME: add an option to add the branch to the master's BranchList. - docstring text = bformat( + if (tmpbuffer) { + // This is for a temporary buffer, so simply create the branch. + // Must not use lyx::dispatch(), since tmpbuffer has no view. + DispatchResult dr; + tmpbuffer->dispatch(FuncRequest(LFUN_BRANCH_ADD, name), dr); + } else { + docstring text = bformat( _("The pasted branch \"%1$s\" is undefined.\n" "Do you want to add it to the document's branch list?"), name); - if (frontend::Alert::prompt(_("Unknown branch"), + if (frontend::Alert::prompt(_("Unknown branch"), text, 0, 1, _("&Add"), _("&Don't Add")) != 0) - break; - lyx::dispatch(FuncRequest(LFUN_BRANCH_ADD, name)); + break; + lyx::dispatch(FuncRequest(LFUN_BRANCH_ADD, name)); + } // We need to update the list of branches. need_update = true; break; @@ -497,7 +504,7 @@ void putClipboard(ParagraphList const & paragraphs, // temporary Buffer, since it does a lot of things to fix them up. DocIterator dit = doc_iterator_begin(buffer, &buffer->inset()); ErrorList el; - pasteSelectionHelper(dit, paragraphs, docclass, el); + pasteSelectionHelper(dit, paragraphs, docclass, buffer, el); // We don't want to produce images that are not used. Therefore, // output formulas as MathML. Even if this is not understood by all @@ -523,6 +530,8 @@ void putClipboard(ParagraphList const & paragraphs, // XHTML format odocstringstream oshtml; OutputParams runparams(encodings.fromLyXName("utf8")); + // We do not need to produce images, etc. + runparams.dryrun = true; buffer->writeLyXHTMLSource(oshtml, runparams, Buffer::FullSource); theClipboard().put(lyx, oshtml.str(), plaintext); @@ -1032,9 +1041,8 @@ void pasteParagraphList(Cursor & cur, ParagraphList const & parlist, LBUFERR(text); PasteReturnValue prv = - pasteSelectionHelper(cur, parlist, docclass, errorList); - if (prv.needupdate) - cur.forceBufferUpdate(); + pasteSelectionHelper(cur, parlist, docclass, 0, errorList); + cur.forceBufferUpdate(); cur.clearSelection(); text->setCursor(cur, prv.par, prv.pos); }