X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftext3.C;h=85cf5515d6225daac73e3a421b871ca8878b84d6;hb=e5a46922e916a06ad1b958d5895cc3cfb4f13d2c;hp=d5b7ff0bdd58c58fd9703d2d92f96259d54caaa2;hpb=475232ed47a5497b13453ffd3a20cceff2118847;p=lyx.git diff --git a/src/text3.C b/src/text3.C index d5b7ff0bdd..85cf5515d6 100644 --- a/src/text3.C +++ b/src/text3.C @@ -1210,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