From: Lars Gullik Bjønnes Date: Tue, 4 Mar 2003 20:45:02 +0000 (+0000) Subject: add ParagraphList::erase, make mergeParagraph take a Buffer* arg, adjust other funcs... X-Git-Tag: 1.6.10~17363 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=30a9dd7f98faf7baccc3c233e223a421eb9896cd;p=features.git add ParagraphList::erase, make mergeParagraph take a Buffer* arg, adjust other funcs to suit git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6344 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/ChangeLog b/src/ChangeLog index 9b7e289a15..c749add78a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,20 @@ 2003-03-04 Lars Gullik Bjønnes + * text.C (backspace): adjust + + * tabular.C (SetMultiColumn): adjust + + * CutAndPaste.C (cutSelection): adjust + (pasteSelection): adjust + + * tabular.C (SetMultiColumn): make it take a Buffer* instead of a + Buffer const * as arg + + * ParagraphList.C (erase): new function + * paragraph_funcs.C (mergeParagraph): use it + (mergeParagraph): make it take a Buffer* instead of a + BufferParams* as arg + * paragraph_funcs.C (breakParagraph): take ParagraphList::iterator as arg (breakParagraphConservative): ditto diff --git a/src/CutAndPaste.C b/src/CutAndPaste.C index 78dddda128..f019f906d0 100644 --- a/src/CutAndPaste.C +++ b/src/CutAndPaste.C @@ -165,7 +165,7 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar, // paste the paragraphs again, if possible if (startpar->hasSameLayout(startpar->next()) || startpar->next()->empty()) { - mergeParagraph(buffer->params, startpar); + mergeParagraph(buffer, startpar); // this because endpar gets deleted here! (*endpar) = startpar; } @@ -377,20 +377,20 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar, if ((*par)->next() == lastbuffer) lastbuffer = *par; - mergeParagraph(current_view->buffer()->params, *par); + mergeParagraph(current_view->buffer(), *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()->params, lastbuffer); + mergeParagraph(current_view->buffer(), lastbuffer); } else if (!lastbuffer->next()->size()) { lastbuffer->next()->makeSameLayout(lastbuffer); - mergeParagraph(current_view->buffer()->params, lastbuffer); + mergeParagraph(current_view->buffer(), lastbuffer); } else if (!lastbuffer->size()) { lastbuffer->makeSameLayout(lastbuffer->next()); - mergeParagraph(current_view->buffer()->params, lastbuffer); + mergeParagraph(current_view->buffer(), lastbuffer); } else lastbuffer->next()->stripLeadingSpaces(); } diff --git a/src/ParagraphList.C b/src/ParagraphList.C index 131380d644..136071aa7a 100644 --- a/src/ParagraphList.C +++ b/src/ParagraphList.C @@ -95,6 +95,18 @@ void ParagraphList::clear() } +void ParagraphList::erase(ParagraphList::iterator it) +{ + Paragraph * prev = it->previous(); + Paragraph * next = it->next(); + + prev->next(next); + next->previous(prev); + + delete &*it; +} + + ParagraphList::iterator ParagraphList::begin() { return iterator(parlist); diff --git a/src/ParagraphList.h b/src/ParagraphList.h index b56dacdc72..b81ac00690 100644 --- a/src/ParagraphList.h +++ b/src/ParagraphList.h @@ -48,6 +48,8 @@ public: /// void clear(); /// + void erase(iterator it); + /// iterator begin(); /// iterator begin() const; diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 9e65924dc3..849c49cf09 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,10 @@ +2003-03-04 Lars Gullik Bjønnes + + * insettext.C (collapseParagraphs): adjust + (appendParagraphs): make it take a Buffer* instead of a + BufferParams& as arg. + (appendParagraphs): adjust + 2003-03-04 Angus Leeming * insetbibitem.C (localDispatch): diff --git a/src/insets/insettext.C b/src/insets/insettext.C index 84ae7667fb..df7a181653 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -2770,7 +2770,6 @@ bool InsetText::checkInsertChar(LyXFont & font) void InsetText::collapseParagraphs(BufferView * bv) const { - BufferParams const & bparams = bv->buffer()->params; LyXText * llt = getLyXText(bv); while (paragraphs.begin()->next()) { @@ -2791,7 +2790,7 @@ void InsetText::collapseParagraphs(BufferView * bv) const llt->selection.end.pos() + paragraphs.begin()->size()); } } - mergeParagraph(bparams, &*paragraphs.begin()); + mergeParagraph(bv->buffer(), paragraphs.begin()); } reinitLyXText(); } @@ -2805,9 +2804,10 @@ void InsetText::getDrawFont(LyXFont & font) const } -void InsetText::appendParagraphs(BufferParams const & bparams, +void InsetText::appendParagraphs(Buffer * buffer, Paragraph * newpar) { + BufferParams const & bparams = buffer->params; Paragraph * buf; Paragraph * tmpbuf = newpar; Paragraph * lastbuffer = buf = new Paragraph(*tmpbuf, false); @@ -2837,7 +2837,7 @@ void InsetText::appendParagraphs(BufferParams const & bparams, // paste it! lastbuffer->next(buf); buf->previous(lastbuffer); - mergeParagraph(bparams, lastbuffer); + mergeParagraph(buffer, lastbuffer); reinitLyXText(); } diff --git a/src/insets/insettext.h b/src/insets/insettext.h index 33c7d5c363..5919ab48b7 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -248,7 +248,7 @@ public: /// void getDrawFont(LyXFont &) const; /// append text onto the existing text - void appendParagraphs(BufferParams const & bp, Paragraph *); + void appendParagraphs(Buffer * bp, Paragraph *); /// void addPreview(grfx::PreviewLoader &) const; diff --git a/src/paragraph_funcs.C b/src/paragraph_funcs.C index 2bc4177224..77462f1e93 100644 --- a/src/paragraph_funcs.C +++ b/src/paragraph_funcs.C @@ -154,8 +154,10 @@ void breakParagraphConservative(BufferParams const & bparams, } -void mergeParagraph(BufferParams const & bparams, ParagraphList::iterator par) +void mergeParagraph(Buffer * buf, ParagraphList::iterator par) { + BufferParams const & bparams = buf->params; + ParagraphList::iterator the_next = boost::next(par); // first the DTP-stuff @@ -173,13 +175,7 @@ void mergeParagraph(BufferParams const & bparams, ParagraphList::iterator par) ++j; } - // delete the next paragraph -#warning a ParagraphList::erase is needed. (Lgb) - // Isn't this really just par? - ParagraphList::iterator ppar = boost::prior(the_next); - ParagraphList::iterator npar = boost::next(the_next); - delete &*the_next; - ppar->next(&*npar); + buf->paragraphs.erase(the_next); } diff --git a/src/paragraph_funcs.h b/src/paragraph_funcs.h index 56054c8f2a..fa7d69419f 100644 --- a/src/paragraph_funcs.h +++ b/src/paragraph_funcs.h @@ -35,7 +35,7 @@ void breakParagraphConservative(BufferParams const & bparams, * Append the next paragraph onto the tail of this one. * Be careful, this doesent make any check at all. */ -void mergeParagraph(BufferParams const & bparams, +void mergeParagraph(Buffer * buf, ParagraphList::iterator par); diff --git a/src/tabular.C b/src/tabular.C index 9787714026..dcf10bba2a 100644 --- a/src/tabular.C +++ b/src/tabular.C @@ -1542,7 +1542,7 @@ LyXTabular::cellstruct * LyXTabular::cellinfo_of_cell(int cell) const } -void LyXTabular::SetMultiColumn(Buffer const * buffer, int cell, int number) +void LyXTabular::SetMultiColumn(Buffer * buffer, int cell, int number) { cellinfo_of_cell(cell)->multicolumn = CELL_BEGIN_OF_MULTICOLUMN; cellinfo_of_cell(cell)->alignment = column_info[column_of_cell(cell)].alignment; @@ -1552,7 +1552,7 @@ void LyXTabular::SetMultiColumn(Buffer const * buffer, int cell, int number) #if 1 for (int i = 1; i < number; ++i) { cellinfo_of_cell(cell+i)->multicolumn = CELL_PART_OF_MULTICOLUMN; - cellinfo_of_cell(cell)->inset.appendParagraphs(buffer->params, + cellinfo_of_cell(cell)->inset.appendParagraphs(buffer, cellinfo_of_cell(cell+i)->inset.paragraph()); cellinfo_of_cell(cell+i)->inset.clear(false); } diff --git a/src/tabular.h b/src/tabular.h index bac0c068ea..6ed2cefe57 100644 --- a/src/tabular.h +++ b/src/tabular.h @@ -301,7 +301,7 @@ public: /// bool IsMultiColumn(int cell, bool real = false) const; /// - void SetMultiColumn(Buffer const *, int cell, int number); + void SetMultiColumn(Buffer *, int cell, int number); /// int UnsetMultiColumn(int cell); // returns number of new cells /// diff --git a/src/text.C b/src/text.C index 2b251da253..2925ee7f68 100644 --- a/src/text.C +++ b/src/text.C @@ -2440,7 +2440,7 @@ void LyXText::backspace(BufferView * bview) && cursor.par()->getAlign() == tmppar->getAlign()) { removeParagraph(tmprow); removeRow(tmprow); - mergeParagraph(bview->buffer()->params, cursor.par()); + mergeParagraph(bview->buffer(), cursor.par()); if (!cursor.pos() || !cursor.par()->isSeparator(cursor.pos() - 1)) ; //cursor.par()->insertChar(cursor.pos(), ' ');