From 3bee5faf12f6ef92911d3e7cd6811f796a5780d9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lars=20Gullik=20Bj=C3=B8nnes?= Date: Thu, 6 Mar 2003 10:02:40 +0000 Subject: [PATCH] more ParagraphList work git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6362 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView_pimpl.C | 4 +-- src/ChangeLog | 24 +++++++++++++++ src/CutAndPaste.C | 21 +++++++++----- src/buffer.C | 10 +++---- src/insets/ChangeLog | 7 +++++ src/insets/insettext.C | 16 +++++----- src/insets/insettext.h | 4 +-- src/lyxtext.h | 4 ++- src/mathed/formulabase.C | 2 +- src/paragraph_funcs.C | 63 ++++++++++++++++++++-------------------- src/paragraph_funcs.h | 12 ++++++-- src/text.C | 7 +++-- src/text3.C | 6 ++-- 13 files changed, 114 insertions(+), 66 deletions(-) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index c34467edae..b8f690713e 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -1315,13 +1315,13 @@ bool BufferView::Pimpl::insertInset(Inset * inset, string const & lout) beforeChange(bv_->text); if (!lout.empty()) { update(bv_->text, BufferView::SELECT|BufferView::FITCUR); - bv_->text->breakParagraph(bv_); + bv_->text->breakParagraph(bv_, bv_->buffer()->paragraphs); update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); if (!bv_->text->cursor.par()->empty()) { bv_->text->cursorLeft(bv_); - bv_->text->breakParagraph(bv_); + bv_->text->breakParagraph(bv_, bv_->buffer()->paragraphs); update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } diff --git a/src/ChangeLog b/src/ChangeLog index daee8907eb..77fec1f169 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,27 @@ +2003-03-06 Lars Gullik Bjønnes + + * text3.C (dispatch): adjust + + * text.C (breakParagraph): add a ParagraphList as arg + + * paragraph_funcs.C (breakParagraph): change to take a + BufferParams and a ParagraphList as args. + (breakParagraphConservative): ditto + (mergeParagraph): ditto + (TeXDeeper): add a ParagraphList arg + (TeXEnvironment): ditto + (TeXOnePar): ditto + + * buffer.C (readLyXformat2): adjust + (insertStringAsLines): adjust + (latexParagraphs): adjust + + * CutAndPaste.C (cutSelection): use 'true' not '1' as truth value. + (cutSelection): adjust + (pasteSelection): adjust + + * BufferView_pimpl.C (insertInset): adjust + 2003-03-05 Angus Leeming * commandtags.h: diff --git a/src/CutAndPaste.C b/src/CutAndPaste.C index 94370cd80b..532e12c40d 100644 --- a/src/CutAndPaste.C +++ b/src/CutAndPaste.C @@ -113,7 +113,7 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar, Paragraph * pit = startpar->next(); - while (1) { + while (true) { // *endpar can be 0 if (!pit) break; @@ -165,7 +165,11 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar, // paste the paragraphs again, if possible if (startpar->hasSameLayout(startpar->next()) || startpar->next()->empty()) { - mergeParagraph(buffer, startpar); +#warning This is suspect. (Lgb) + // When doing this merge we must know if the par really + // belongs to an inset, and if it does then we have to use + // the insets paragraphs, and not the buffers. (Lgb) + mergeParagraph(buffer->params, buffer->paragraphs, startpar); // this because endpar gets deleted here! (*endpar) = startpar; } @@ -361,7 +365,7 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar, // if necessary if (((*par)->size() > pos) || !(*par)->next()) { breakParagraphConservative( - current_view->buffer(), *par, pos); + current_view->buffer()->params, current_view->buffer()->paragraphs, *par, pos); paste_the_end = true; } // set the end for redoing later @@ -377,20 +381,23 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar, if ((*par)->next() == lastbuffer) lastbuffer = *par; - mergeParagraph(current_view->buffer(), *par); + mergeParagraph(current_view->buffer()->params, + current_view->buffer()->paragraphs, *par); // store the new cursor position *par = lastbuffer; pos = lastbuffer->size(); // maybe some pasting if (lastbuffer->next() && paste_the_end) { if (lastbuffer->next()->hasSameLayout(lastbuffer)) { - mergeParagraph(current_view->buffer(), lastbuffer); + mergeParagraph(current_view->buffer()->params, + current_view->buffer()->paragraphs, lastbuffer); } else if (!lastbuffer->next()->size()) { lastbuffer->next()->makeSameLayout(lastbuffer); - mergeParagraph(current_view->buffer(), lastbuffer); + mergeParagraph(current_view->buffer()->params, current_view->buffer()->paragraphs, lastbuffer); } else if (!lastbuffer->size()) { lastbuffer->makeSameLayout(lastbuffer->next()); - mergeParagraph(current_view->buffer(), lastbuffer); + mergeParagraph(current_view->buffer()->params, + current_view->buffer()->paragraphs, lastbuffer); } else lastbuffer->next()->stripLeadingSpaces(); } diff --git a/src/buffer.C b/src/buffer.C index d091ac51e8..f61df89085 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -317,7 +317,7 @@ bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par) par->layout(params.getLyXTextClass().defaultLayout()); } else { // We are inserting into an existing document - users->text->breakParagraph(users); + users->text->breakParagraph(users, paragraphs); first_par = users->text->ownerParagraph(); pos = 0; markDirty(); @@ -1030,7 +1030,7 @@ void Buffer::insertStringAsLines(Paragraph *& par, pos_type & pos, cit != str.end(); ++cit) { if (*cit == '\n') { if (autobreakrows && (!par->empty() || layout->keepempty)) { - breakParagraph(this, par, pos, + breakParagraph(params, paragraphs, par, pos, layout->isEnvironment()); par = par->next(); pos = 0; @@ -1867,12 +1867,12 @@ void Buffer::latexParagraphs(ostream & ofs, if (layout->isEnvironment() || !par->params().leftIndent().zero()) { - par = TeXEnvironment(this, params, par, ofs, texrow); + par = TeXEnvironment(this, params, paragraphs, par, ofs, texrow); } else { - par = TeXOnePar(this, params, par, ofs, texrow, moving_arg); + par = TeXOnePar(this, params, paragraphs, par, ofs, texrow, moving_arg); } } else { - par = TeXOnePar(this, params, par, ofs, texrow, moving_arg); + par = TeXOnePar(this, params, paragraphs, par, ofs, texrow, moving_arg); } } // It might be that we only have a title in this document diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 1c3c455e34..e7c484c17a 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,10 @@ +2003-03-06 Lars Gullik Bjønnes + + * insettext.C (updateLocal): un-const function + (updateLocal): adjust + (collapseParagraphs): un-const function + (collapseParagraphs): adjust + 2003-03-05 Angus Leeming * insetwrap.[Ch]: define a new class InsetWrapMailer and use diff --git a/src/insets/insettext.C b/src/insets/insettext.C index df7a181653..f814cdf594 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -635,7 +635,7 @@ void InsetText::setUpdateStatus(BufferView * bv, int what) const } -void InsetText::updateLocal(BufferView * bv, int what, bool mark_dirty) const +void InsetText::updateLocal(BufferView * bv, int what, bool mark_dirty) { if (!autoBreakRows && paragraphs.begin()->next()) collapseParagraphs(bv); @@ -1448,7 +1448,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev) result = DISPATCHED; break; } - lt->breakParagraph(bv, 0); + lt->breakParagraph(bv, paragraphs, 0); updwhat = CURSOR | FULL; updflag = true; break; @@ -1457,7 +1457,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev) result = DISPATCHED; break; } - lt->breakParagraph(bv, 1); + lt->breakParagraph(bv, paragraphs, 1); updwhat = CURSOR | FULL; updflag = true; break; @@ -2388,7 +2388,7 @@ void InsetText::resizeLyXText(BufferView * bv, bool force) const t->first_y = bv->screen().topCursorVisible(t->cursor, t->first_y); if (!owner()) { - updateLocal(bv, FULL, false); + const_cast(this)->updateLocal(bv, FULL, false); // this will scroll the screen such that the cursor becomes visible bv->updateScrollbar(); } else { @@ -2427,7 +2427,7 @@ void InsetText::reinitLyXText() const } t->first_y = bv->screen().topCursorVisible(t->cursor, t->first_y); if (!owner()) { - updateLocal(bv, FULL, false); + const_cast(this)->updateLocal(bv, FULL, false); // this will scroll the screen such that the cursor becomes visible bv->updateScrollbar(); } else { @@ -2768,7 +2768,7 @@ bool InsetText::checkInsertChar(LyXFont & font) } -void InsetText::collapseParagraphs(BufferView * bv) const +void InsetText::collapseParagraphs(BufferView * bv) { LyXText * llt = getLyXText(bv); @@ -2790,7 +2790,7 @@ void InsetText::collapseParagraphs(BufferView * bv) const llt->selection.end.pos() + paragraphs.begin()->size()); } } - mergeParagraph(bv->buffer(), paragraphs.begin()); + mergeParagraph(bv->buffer()->params, paragraphs, paragraphs.begin()); } reinitLyXText(); } @@ -2837,7 +2837,7 @@ void InsetText::appendParagraphs(Buffer * buffer, // paste it! lastbuffer->next(buf); buf->previous(lastbuffer); - mergeParagraph(buffer, lastbuffer); + mergeParagraph(buffer->params, paragraphs, lastbuffer); reinitLyXText(); } diff --git a/src/insets/insettext.h b/src/insets/insettext.h index 5919ab48b7..09fbe0e090 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -262,7 +262,7 @@ public: ParagraphList paragraphs; protected: /// - void updateLocal(BufferView *, int what, bool mark_dirty) const; + void updateLocal(BufferView *, int what, bool mark_dirty); /// set parameters for an initial lock of this inset void lockInset(BufferView *); /// lock an inset inside this one @@ -358,7 +358,7 @@ private: /// void reinitLyXText() const; /// - void collapseParagraphs(BufferView *) const; + void collapseParagraphs(BufferView *); /* Private structures and variables */ /// diff --git a/src/lyxtext.h b/src/lyxtext.h index 84ae9e2e2d..9cda952b79 100644 --- a/src/lyxtext.h +++ b/src/lyxtext.h @@ -28,6 +28,7 @@ class Spacing; class UpdatableInset; class VSpace; class WordLangTuple; +class ParagraphList; /** @@ -106,7 +107,8 @@ public: /// void breakAgainOneRow(BufferView *, Row * row); /// what you expect when pressing at cursor position - void breakParagraph(BufferView *, char keep_layout = 0); + void breakParagraph(BufferView *, + ParagraphList & paragraphs, char keep_layout = 0); /** set layout over selection and make a total rebreak of those paragraphs diff --git a/src/mathed/formulabase.C b/src/mathed/formulabase.C index c16e12577a..03ec5ea312 100644 --- a/src/mathed/formulabase.C +++ b/src/mathed/formulabase.C @@ -817,7 +817,7 @@ dispatch_result InsetFormulaBase::localDispatch(FuncRequest const & cmd) case LFUN_INSET_APPLY: { string const name = cmd.getArg(0); - InsetBase * base = + InsetBase * base = bv->owner()->getDialogs().getOpenInset(name); if (base) { diff --git a/src/paragraph_funcs.C b/src/paragraph_funcs.C index ccdbd46fe4..88f5ddc9eb 100644 --- a/src/paragraph_funcs.C +++ b/src/paragraph_funcs.C @@ -29,16 +29,15 @@ using lyx::pos_type; using std::endl; using std::ostream; -void breakParagraph(Buffer * buf, +void breakParagraph(BufferParams const & bparams, + ParagraphList & paragraphs, ParagraphList::iterator par, pos_type pos, int flag) { - BufferParams const & bparams = buf->params; - // create a new paragraph, and insert into the list - ParagraphList::iterator tmp = buf->paragraphs.insert(boost::next(par), - new Paragraph); + ParagraphList::iterator tmp = paragraphs.insert(boost::next(par), + new Paragraph); // without doing that we get a crash when typing at the // end of a paragraph @@ -130,15 +129,14 @@ void breakParagraph(Buffer * buf, } -void breakParagraphConservative(Buffer * buf, +void breakParagraphConservative(BufferParams const & bparams, + ParagraphList & paragraphs, ParagraphList::iterator par, pos_type pos) { - BufferParams const & bparams = buf->params; - // create a new paragraph - ParagraphList::iterator tmp = buf->paragraphs.insert(boost::next(par), - new Paragraph); + ParagraphList::iterator tmp = paragraphs.insert(boost::next(par), + new Paragraph); tmp->makeSameLayout(&*par); // When can pos > Last()? @@ -161,10 +159,10 @@ void breakParagraphConservative(Buffer * buf, } -void mergeParagraph(Buffer * buf, ParagraphList::iterator par) +void mergeParagraph(BufferParams const & bparams, + ParagraphList & paragraphs, + ParagraphList::iterator par) { - BufferParams const & bparams = buf->params; - ParagraphList::iterator the_next = boost::next(par); // first the DTP-stuff @@ -182,7 +180,7 @@ void mergeParagraph(Buffer * buf, ParagraphList::iterator par) ++j; } - buf->paragraphs.erase(the_next); + paragraphs.erase(the_next); } @@ -255,18 +253,19 @@ int getEndLabel(Paragraph * para, BufferParams const & bparams) ParagraphList::iterator TeXDeeper(Buffer const * buf, BufferParams const & bparams, + ParagraphList const & paragraphs, ParagraphList::iterator pit, ostream & os, TexRow & texrow) { lyxerr[Debug::LATEX] << "TeXDeeper... " << &*pit << endl; ParagraphList::iterator par = pit; - while (par != buf->paragraphs.end()&& par->params().depth() == pit->params().depth()) { + while (par != paragraphs.end()&& par->params().depth() == pit->params().depth()) { if (par->layout()->isEnvironment()) { - par = TeXEnvironment(buf, bparams, par, + par = TeXEnvironment(buf, bparams, paragraphs, par, os, texrow); } else { - par = TeXOnePar(buf, bparams, par, + par = TeXOnePar(buf, bparams, paragraphs, par, os, texrow, false); } } @@ -279,6 +278,7 @@ TeXDeeper(Buffer const * buf, ParagraphList::iterator TeXEnvironment(Buffer const * buf, BufferParams const & bparams, + ParagraphList const & paragraphs, ParagraphList::iterator pit, ostream & os, TexRow & texrow) { @@ -289,7 +289,7 @@ TeXEnvironment(Buffer const * buf, Language const * language = pit->getParLanguage(bparams); Language const * doc_language = bparams.language; Language const * previous_language = - (pit != buf->paragraphs.begin()) + (pit != paragraphs.begin()) ? boost::prior(pit)->getParLanguage(bparams) : doc_language; if (language->babel() != previous_language->babel()) { @@ -338,9 +338,9 @@ TeXEnvironment(Buffer const * buf, } ParagraphList::iterator par = pit; do { - par = TeXOnePar(buf, bparams, par, os, texrow, false); + par = TeXOnePar(buf, bparams, paragraphs, par, os, texrow, false); - if (par != buf->paragraphs.end()&& par->params().depth() > pit->params().depth()) { + if (par != paragraphs.end()&& par->params().depth() > pit->params().depth()) { if (par->layout()->isParagraph()) { // Thinko! @@ -360,9 +360,9 @@ TeXEnvironment(Buffer const * buf, os << '\n'; texrow.newline(); } - par = TeXDeeper(buf, bparams, par, os, texrow); + par = TeXDeeper(buf, bparams, paragraphs, par, os, texrow); } - } while (par != buf->paragraphs.end() + } while (par != paragraphs.end() && par->layout() == pit->layout() && par->params().depth() == pit->params().depth() && par->params().leftIndent() == pit->params().leftIndent()); @@ -404,6 +404,7 @@ InsetOptArg * optArgInset(Paragraph const & par) ParagraphList::iterator TeXOnePar(Buffer const * buf, BufferParams const & bparams, + ParagraphList const & paragraphs, ParagraphList::iterator pit, ostream & os, TexRow & texrow, bool moving_arg) @@ -426,7 +427,7 @@ TeXOnePar(Buffer const * buf, } if (!pit->params().spacing().isDefault() - && (pit == buf->paragraphs.begin() || !boost::prior(pit)->hasSameLayout(&*pit))) { + && (pit == paragraphs.begin() || !boost::prior(pit)->hasSameLayout(&*pit))) { os << pit->params().spacing().writeEnvirBegin() << '\n'; texrow.newline(); } @@ -462,14 +463,14 @@ TeXOnePar(Buffer const * buf, Language const * language = pit->getParLanguage(bparams); Language const * doc_language = bparams.language; Language const * previous_language = - (pit != buf->paragraphs.begin()) + (pit != paragraphs.begin()) ? boost::prior(pit)->getParLanguage(bparams) : doc_language; if (language->babel() != previous_language->babel() // check if we already put language command in TeXEnvironment() && !(style->isEnvironment() - && (pit == buf->paragraphs.begin() || + && (pit == paragraphs.begin() || (boost::prior(pit)->layout() != pit->layout() && boost::prior(pit)->getDepth() <= pit->getDepth()) || boost::prior(pit)->getDepth() < pit->getDepth()))) @@ -543,7 +544,7 @@ TeXOnePar(Buffer const * buf, bool is_command = style->isCommand(); if (style->resfont.size() != font.size() - && boost::next(pit) != buf->paragraphs.end() + && boost::next(pit) != paragraphs.end() && !is_command) { if (!need_par) os << '{'; @@ -556,7 +557,7 @@ TeXOnePar(Buffer const * buf, switch (style->latextype) { case LATEX_ITEM_ENVIRONMENT: case LATEX_LIST_ENVIRONMENT: - if (boost::next(pit) != buf->paragraphs.end() + if (boost::next(pit) != paragraphs.end() && (pit->params().depth() < boost::next(pit)->params().depth())) { os << '\n'; texrow.newline(); @@ -565,14 +566,14 @@ TeXOnePar(Buffer const * buf, case LATEX_ENVIRONMENT: // if its the last paragraph of the current environment // skip it otherwise fall through - if (boost::next(pit) != buf->paragraphs.end() + if (boost::next(pit) != paragraphs.end() && (boost::next(pit)->layout() != pit->layout() || boost::next(pit)->params().depth() != pit->params().depth())) break; // fall through possible default: // we don't need it for the last paragraph!!! - if (boost::next(pit) != buf->paragraphs.end()) { + if (boost::next(pit) != paragraphs.end()) { os << '\n'; texrow.newline(); } @@ -601,14 +602,14 @@ TeXOnePar(Buffer const * buf, } if (!pit->params().spacing().isDefault() - && (boost::next(pit) == buf->paragraphs.end()|| !boost::next(pit)->hasSameLayout(&*pit))) { + && (boost::next(pit) == paragraphs.end()|| !boost::next(pit)->hasSameLayout(&*pit))) { os << pit->params().spacing().writeEnvirEnd() << '\n'; texrow.newline(); } } // we don't need it for the last paragraph!!! - if (boost::next(pit) != buf->paragraphs.end()) { + if (boost::next(pit) != paragraphs.end()) { os << '\n'; texrow.newline(); } else { diff --git a/src/paragraph_funcs.h b/src/paragraph_funcs.h index ace89ee07d..359f1c22db 100644 --- a/src/paragraph_funcs.h +++ b/src/paragraph_funcs.h @@ -21,13 +21,15 @@ class Paragraph; class TexRow; /// -void breakParagraph(Buffer * buf, +void breakParagraph(BufferParams const & bparams, + ParagraphList & paragraphs, ParagraphList::iterator par, lyx::pos_type pos, int flag); /// -void breakParagraphConservative(Buffer * buf, +void breakParagraphConservative(BufferParams const & bparams, + ParagraphList & paragraphs, ParagraphList::iterator par, lyx::pos_type pos); @@ -35,7 +37,8 @@ void breakParagraphConservative(Buffer * buf, * Append the next paragraph onto the tail of this one. * Be careful, this doesent make any check at all. */ -void mergeParagraph(Buffer * buf, +void mergeParagraph(BufferParams const & bparams, + ParagraphList & paragraphs, ParagraphList::iterator par); @@ -56,18 +59,21 @@ int getEndLabel(Paragraph * para, BufferParams const & bparams); ParagraphList::iterator TeXDeeper(Buffer const * buf, BufferParams const & bparams, + ParagraphList const & paragraphs, ParagraphList::iterator pit, std::ostream & os, TexRow & texrow); ParagraphList::iterator TeXEnvironment(Buffer const * buf, BufferParams const & bparams, + ParagraphList const & paragraphs, ParagraphList::iterator pit, std::ostream & os, TexRow & texrow); ParagraphList::iterator TeXOnePar(Buffer const * buf, BufferParams const & bparams, + ParagraphList const & paragraphs, ParagraphList::iterator pit, std::ostream & os, TexRow & texrow, bool moving_arg); diff --git a/src/text.C b/src/text.C index 8907e77b05..1d237f1871 100644 --- a/src/text.C +++ b/src/text.C @@ -1324,7 +1324,8 @@ void LyXText::breakAgainOneRow(BufferView * bview, Row * row) } -void LyXText::breakParagraph(BufferView * bview, char keep_layout) +void LyXText::breakParagraph(BufferView * bview, + ParagraphList & paragraphs, char keep_layout) { // allow only if at start or end, or all previous is new text if (cursor.pos() && cursor.pos() != cursor.par()->size() @@ -1363,7 +1364,7 @@ void LyXText::breakParagraph(BufferView * bview, char keep_layout) // paragraph before or behind and we should react on that one // but we can fix this in 1.3.0 (Jug 20020509) bool const isempty = (layout->keepempty && cursor.par()->empty()); - ::breakParagraph(bview->buffer(), cursor.par(), cursor.pos(), + ::breakParagraph(bview->buffer()->params, paragraphs, cursor.par(), cursor.pos(), keep_layout); // well this is the caption hack since one caption is really enough @@ -2444,7 +2445,7 @@ void LyXText::backspace(BufferView * bview) && cursor.par()->getAlign() == tmppar->getAlign()) { removeParagraph(tmprow); removeRow(tmprow); - mergeParagraph(bview->buffer(), cursor.par()); + mergeParagraph(bview->buffer()->params, bview->buffer()->paragraphs, cursor.par()); if (!cursor.pos() || !cursor.par()->isSeparator(cursor.pos() - 1)) ; //cursor.par()->insertChar(cursor.pos(), ' '); diff --git a/src/text3.C b/src/text3.C index 68b22a6f2b..bb4da122a5 100644 --- a/src/text3.C +++ b/src/text3.C @@ -830,7 +830,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) case LFUN_BREAKPARAGRAPH: bv->beforeChange(this); - breakParagraph(bv, 0); + breakParagraph(bv, bv->buffer()->paragraphs, 0); update(bv); selection.cursor = cursor; bv->switchKeyMap(); @@ -839,7 +839,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) case LFUN_BREAKPARAGRAPHKEEPLAYOUT: bv->beforeChange(this); - breakParagraph(bv, 1); + breakParagraph(bv, bv->buffer()->paragraphs, 1); update(bv); selection.cursor = cursor; bv->switchKeyMap(); @@ -867,7 +867,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) } } else { - breakParagraph(bv, 0); + breakParagraph(bv, bv->buffer()->paragraphs, 0); //update(bv); } update(bv); -- 2.39.2