Fix bugs 4977 and 2018:

http://bugzilla.lyx.org/show_bug.cgi?id=4977
http://bugzilla.lyx.org/show_bug.cgi?id=2018

	* Text3.cpp (doInsertInset): do not copy selection to clipboard if we 
	do not intend to paste it later (bug 4977); do not remove space at
	start of paragraph (bug 2018); make sure the cursor is at the right
	place after pasting inside inset.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25621 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2008-07-14 19:47:43 +00:00
parent 5e0da19d1b
commit 5be432fb92

View File

@ -208,7 +208,8 @@ static bool doInsertInset(Cursor & cur, Text * text,
bool gotsel = false; bool gotsel = false;
if (cur.selection()) { if (cur.selection()) {
lyx::dispatch(FuncRequest(LFUN_CUT)); cutSelection(cur, false, pastesel);
cur.clearSelection();
gotsel = true; gotsel = true;
} }
text->insertInset(cur, inset); text->insertInset(cur, inset);
@ -219,7 +220,10 @@ static bool doInsertInset(Cursor & cur, Text * text,
if (!gotsel || !pastesel) if (!gotsel || !pastesel)
return true; return true;
lyx::dispatch(FuncRequest(LFUN_PASTE, "0")); pasteFromStack(cur, cur.buffer().errorList("Paste"), 0);
cur.buffer().errors("Paste");
cur.clearSelection(); // bug 393
cur.finishUndo();
InsetText * insetText = dynamic_cast<InsetText *>(inset); InsetText * insetText = dynamic_cast<InsetText *>(inset);
if (insetText && !insetText->allowMultiPar() || cur.lastpit() == 0) { if (insetText && !insetText->allowMultiPar() || cur.lastpit() == 0) {
// reset first par to default // reset first par to default
@ -230,12 +234,13 @@ static bool doInsertInset(Cursor & cur, Text * text,
// Merge multiple paragraphs -- hack // Merge multiple paragraphs -- hack
while (cur.lastpit() > 0) while (cur.lastpit() > 0)
mergeParagraph(bparams, cur.text()->paragraphs(), 0); mergeParagraph(bparams, cur.text()->paragraphs(), 0);
cur.leaveInset(*inset);
} else { } else {
cur.leaveInset(*inset);
// reset surrounding par to default // reset surrounding par to default
docstring const layoutname = insetText->usePlainLayout() docstring const layoutname = insetText->usePlainLayout()
? bparams.documentClass().emptyLayoutName() ? bparams.documentClass().emptyLayoutName()
: bparams.documentClass().defaultLayoutName(); : bparams.documentClass().defaultLayoutName();
cur.leaveInset(*inset);
text->setLayout(cur, layoutname); text->setLayout(cur, layoutname);
} }