From: Jürgen Spitzmüller Date: Sat, 21 Jan 2012 07:02:09 +0000 (+0000) Subject: Fix crash when putting a float around multiple display maths (bug #7974). X-Git-Tag: 2.1.0beta1~2112 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=b965edbb02bfbd4aafd20facbf1f7cfccd34757e;p=features.git Fix crash when putting a float around multiple display maths (bug #7974). This also fixes other float-related bugs, such as this: * select two floats in two consecutive paragraphs and insert a new float around them => the master float's caption is put into the lower subfloat instead of below the subfloats. In the long term, doInsertInset needs a thorough cleanup. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40639 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/Text3.cpp b/src/Text3.cpp index 4c1d07bf46..ce68114527 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -1670,16 +1670,19 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) case LFUN_FLOAT_INSERT: case LFUN_FLOAT_WIDE_INSERT: case LFUN_WRAP_INSERT: { - // will some text be moved into the inset? - bool content = cur.selection(); + // will some content be moved into the inset? + bool const content = cur.selection(); + // does the content consist of multiple paragraphs? + bool const singlepar = (cur.selBegin().pit() == cur.selEnd().pit()); doInsertInset(cur, this, cmd, true, true); cur.posForward(); - // If some text is moved into the inset, doInsertInset - // puts the cursor outside the inset. To insert the - // caption we put it back into the inset. - if (content) + // If some single-par content is moved into the inset, + // doInsertInset puts the cursor outside the inset. + // To insert the caption we put it back into the inset. + // FIXME cleanup doInsertInset to avoid such dances! + if (content && singlepar) cur.backwardPos(); ParagraphList & pars = cur.text()->paragraphs();