X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftext3.C;h=85cf5515d6225daac73e3a421b871ca8878b84d6;hb=52eb91c94fb70d58dceef430659c8781de2eccda;hp=fe9c9cd7846c6d43c9ed1cb73ff1369c32640d7e;hpb=8b5616664142ff0c6384afc18248ae4bf002caa8;p=lyx.git diff --git a/src/text3.C b/src/text3.C index fe9c9cd784..85cf5515d6 100644 --- a/src/text3.C +++ b/src/text3.C @@ -719,13 +719,17 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) recordUndo(cur); InsetBase * inset = createInset(bv, cmd); if (inset) { - Paragraph & par = pars_[cur.pit()]; - // FIXME (Abdel 01/02/2006: - // What follows is a partial fix for bug 2154: + // FIXME (Abdel 01/02/2006): + // What follows would be a partial fix for bug 2154: // http://bugzilla.lyx.org/show_bug.cgi?id=2154 - // This will automatically put the label inset _after_ a - // numbered section. It is possible to extend the mechanism + // This automatically put the label inset _after_ a + // numbered section. It should be possible to extend the mechanism // to any kind of LateX environement. + // The correct way to fix that bug would be at LateX generation. + // I'll let the code here for reference as it could be used for some + // other feature like "automatic labelling". + /* + Paragraph & par = pars_[cur.pit()]; if (inset->lyxCode() == InsetBase::LABEL_CODE && par.layout()->labeltype == LABEL_COUNTER) { // Go to the end of the paragraph @@ -736,6 +740,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) FuncRequest fr(LFUN_BREAK_PARAGRAPH); dispatch(cur, fr); } + */ insertInset(cur, inset); cur.posRight(); } @@ -1205,16 +1210,33 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) case LFUN_FLOAT_INSERT: case LFUN_FLOAT_WIDE_INSERT: case LFUN_WRAP_INSERT: { + bool content = cur.selection(); // will some text be moved into the inset? + 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 (!content) { + 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