Bernhard Roider schrieb:
Hello!

Another minor issue (i did not find a bugzilla entry):

If you select text and insert a float then all three paragraphs that are created are filled with the text and in the middle paragraph the caption inset is displayed left of the text. With this patch the above and below paragraph are left empty whereas the selected text is pasted into the caption inset.
Hi Bernhard, all,

how about the attached patch? I think it captures a few more cases (multi-par cuts, empty inset)

Michael
Index: text3.C
===================================================================
--- text3.C	(Revision 17113)
+++ text3.C	(Arbeitskopie)
@@ -1213,13 +1213,27 @@
 		doInsertInset(cur, this, cmd, true, true);
 		cur.posRight();
 		ParagraphList & pars = cur.text()->paragraphs();
-		// We create two additional empty paragraphs so that the
-		// user can choose where to put the graphics (or table).
-		pars.push_back(pars[0]);
-		pars.push_back(pars[0]);
-		// Now that we have three paragraphs, we reposition the cursor
-		// at the beginning of the second one.
-		cur.pit() = 1;
+		LyXTextClass const & tclass = bv->buffer()->params().getLyXTextClass();
+
+		// add a separate paragraph for the caption inset
+		pars.push_back(Paragraph());
+		pars.back().setInsetOwner(pars[0].inInset());
+		pars.back().layout(tclass.defaultLayout());
+
+		int cap_pit = pars.size() - 1;
+
+		// if an empty inset was created, we create an additional empty
+		// paragraph at the bottom so that the user can choose where to put
+		// the graphics (or table).
+		if (pars[0].empty()) {
+			pars.push_back(Paragraph());
+			pars.back().setInsetOwner(pars[0].inInset());
+			pars.back().layout(tclass.defaultLayout());
+			
+		}
+
+		// reposition the cursor to the caption
+		cur.pit() = cap_pit;
 		cur.pos() = 0;
 		cur.dispatch(FuncRequest(LFUN_CAPTION_INSERT));
 		// FIXME: When leaving the Float (or Wrap) inset we should

Reply via email to