>>>>> "Juergen" == Juergen Spitzmueller <[EMAIL PROTECTED]> writes:
Juergen> Jean-Marc Lasgouttes wrote: >> 2662 in normal use I clicked on a float and lyx crashed >> >> I think this is fixed by boost upgrade, shall I postpone to >> 1.4.x? Juergen> Yes. BTW did you have a look at my patch for bug 2382? Would Juergen> be a candidate. But it's no showstopper, of course. I like the patch a lot (removes ad-hoc code). Small nits: + if (&cur.inset() && cur.inset().forceDefaultParagraphs(cur.idx())) { You do not have to test for &cur.inset(), which is always true. boost::tie(ppp, endpit) = - pasteSelectionHelper(cur.buffer(), + pasteSelectionHelper(cur, text->paragraphs(), - cur.pit(), cur.pos(), parlist, textclass, el); Can't you remove the second, third and fourth arguments of pasteSelectionHelper and get them from cur instead? I'd like more testing but I won't have time. I attach the patch for reference. JMarc
Index: src/insets/insetert.C =================================================================== --- src/insets/insetert.C (Revision 14972) +++ src/insets/insetert.C (Arbeitskopie) @@ -255,7 +255,6 @@ void InsetERT::doDispatch(LCursor & cur, ParagraphList::iterator const end = paragraphs().end(); for (ParagraphList::iterator par = paragraphs().begin(); par != end; ++par) { - par->layout(layout); // in case par had a manual label par->setBeginOfBody(); pos_type const siz = par->size(); Index: src/insets/insetcharstyle.C =================================================================== --- src/insets/insetcharstyle.C (Revision 14972) +++ src/insets/insetcharstyle.C (Arbeitskopie) @@ -229,27 +229,16 @@ void InsetCharStyle::doDispatch(LCursor { setInlined(); switch (cmd.action) { - case LFUN_MOUSE_PRESS: + + case LFUN_MOUSE_PRESS: if (cmd.button() == mouse_button::button3) has_label_ = !has_label_; else InsetText::doDispatch(cur, cmd); break; - case LFUN_PASTE: - case LFUN_PASTESELECTION: { + default: InsetCollapsable::doDispatch(cur, cmd); - BufferParams const & bp = cur.buffer().params(); - LyXLayout_ptr const layout = - bp.getLyXTextClass().defaultLayout(); - ParagraphList::iterator const end = paragraphs().end(); - for (ParagraphList::iterator par = paragraphs().begin(); - par != end; ++par) - par->layout(layout); break; - } - default: - InsetCollapsable::doDispatch(cur, cmd); - break; } } Index: src/CutAndPaste.C =================================================================== --- src/CutAndPaste.C (Revision 14972) +++ src/CutAndPaste.C (Arbeitskopie) @@ -116,11 +116,14 @@ bool checkPastePossible(int index) pair<PitPosPair, pit_type> -pasteSelectionHelper(Buffer const & buffer, - ParagraphList & pars, pit_type pit, int pos, - ParagraphList const & parlist, textclass_type textclass, +pasteSelectionHelper(LCursor & cur, ParagraphList & pars, + ParagraphList const & parlist, textclass_type textclass, ErrorList & errorlist) { + Buffer const & buffer = cur.buffer(); + pit_type pit = cur.pit(); + pos_type pos = cur.pos(); + if (parlist.empty()) return make_pair(PitPosPair(pit, pos), pit); @@ -149,6 +152,19 @@ pasteSelectionHelper(Buffer const & buff } } + // If we are in an inset which returns forceDefaultParagraphs, + // set the paragraphs to default + // FIXME: pars[pit].forceDefaultParagraphs() should be enough, + // but returns the wrong values for tabular cells! + if (&cur.inset() && cur.inset().forceDefaultParagraphs(cur.idx())) { + LyXLayout_ptr const layout = + buffer.params().getLyXTextClass().defaultLayout(); + ParagraphList::iterator const end = insertion.end(); + for (ParagraphList::iterator par = insertion.begin(); + par != end; ++par) + par->layout(layout); + } + // Make sure there is no class difference. InsetText in; // This works without copying any paragraph data because we have @@ -617,9 +633,8 @@ void pasteParagraphList(LCursor & cur, P ErrorList el; boost::tie(ppp, endpit) = - pasteSelectionHelper(cur.buffer(), + pasteSelectionHelper(cur, text->paragraphs(), - cur.pit(), cur.pos(), parlist, textclass, el); bufferErrors(cur.buffer(), el);