Comments?
Abdel.
Index: src/BufferView.C =================================================================== --- src/BufferView.C (revision 15013) +++ src/BufferView.C (working copy) @@ -1208,12 +1208,6 @@ } -LyXText * BufferView::text() const -{ - return buffer_ ? &buffer_->text() : 0; -} - - void BufferView::setCursor(DocIterator const & dit) { size_t const n = dit.depth(); Index: src/BufferView.h =================================================================== --- src/BufferView.h (revision 15013) +++ src/BufferView.h (working copy) @@ -199,8 +199,6 @@ LCursor & cursor(); /// access to full cursor LCursor const & cursor() const; - /// - LyXText * text() const; /// sets cursor and open all relevant collapsable insets. void setCursor(DocIterator const &); /// sets cursor; this is used when handling LFUN_MOUSE_PRESS. Index: src/lyx_cb.C =================================================================== --- src/lyx_cb.C (revision 15012) +++ src/lyx_cb.C (working copy) @@ -362,7 +362,8 @@ return; // clear the selection - if (bv->text() == bv->getLyXText()) + LyXText & const text = bv->buffer()->text(); + if (&text == bv->getLyXText()) bv->cursor().clearSelection(); if (asParagraph) bv->getLyXText()->insertStringAsParagraphs(bv->cursor(), tmpstr); Index: src/lyxfind.C =================================================================== --- src/lyxfind.C (revision 15012) +++ src/lyxfind.C (working copy) @@ -192,7 +192,7 @@ ++num; } - bv->text()->init(bv); + bv->buffer()->text().init(bv); bv->putSelectionAt(doc_iterator_begin(buf.inset()), 0, false); if (num) buf.markDirty(); Index: src/rowpainter.C =================================================================== --- src/rowpainter.C (revision 15012) +++ src/rowpainter.C (working copy) @@ -910,7 +910,7 @@ void paintText(BufferView const & bv, ViewMetricsInfo const & vi, Painter & pain) { - LyXText * const text = bv.text(); + LyXText & text = bv.buffer()->text(); bool const select = bv.cursor().selection(); PainterInfo pi(const_cast<BufferView *>(&bv), pain); @@ -920,19 +920,19 @@ if (repaintAll) { // Clear background (if not delegated to rows) pain.fillRectangle(0, vi.y1, bv.workWidth(), vi.y2 - vi.y1, - text->backgroundColor()); + text.backgroundColor()); } if (select) { - text->drawSelection(pi, 0, 0); + text.drawSelection(pi, 0, 0); } int yy = vi.y1; // draw contents for (pit_type pit = vi.p1; pit <= vi.p2; ++pit) { refreshInside = repaintAll; - Paragraph const & par = text->getPar(pit); + Paragraph const & par = text.getPar(pit); yy += par.ascent(); - paintPar(pi, *bv.text(), pit, 0, yy, repaintAll); + paintPar(pi, text, pit, 0, yy, repaintAll); yy += par.descent(); } @@ -941,24 +941,24 @@ // Try viewing the User Guide Mobius figure if (vi.p1 > 0) { - text->redoParagraph(vi.p1 - 1); - theCoords.parPos()[bv.text()][vi.p1 - 1] = - Point(0, vi.y1 - text->getPar(vi.p1 - 1).descent()); + text.redoParagraph(vi.p1 - 1); + theCoords.parPos()[&text][vi.p1 - 1] = + Point(0, vi.y1 - text.getPar(vi.p1 - 1).descent()); } - if (vi.p2 < lyx::pit_type(text->paragraphs().size()) - 1) { - text->redoParagraph(vi.p2 + 1); - theCoords.parPos()[bv.text()][vi.p2 + 1] = - Point(0, vi.y2 + text->getPar(vi.p2 + 1).ascent()); + if (vi.p2 < lyx::pit_type(text.paragraphs().size()) - 1) { + text.redoParagraph(vi.p2 + 1); + theCoords.parPos()[&text][vi.p2 + 1] = + Point(0, vi.y2 + text.getPar(vi.p2 + 1).ascent()); } // and grey out above (should not happen later) -// lyxerr << "par ascent: " << text->getPar(vi.p1).ascent() << endl; +// lyxerr << "par ascent: " << text.getPar(vi.p1).ascent() << endl; if (vi.y1 > 0 && !vi.singlepar) pain.fillRectangle(0, 0, bv.workWidth(), vi.y1, LColor::bottomarea); // and possibly grey out below -// lyxerr << "par descent: " << text->getPar(vi.p1).ascent() << endl; +// lyxerr << "par descent: " << text.getPar(vi.p1).ascent() << endl; if (vi.y2 < bv.workHeight() && !vi.singlepar) pain.fillRectangle(0, vi.y2, bv.workWidth(), bv.workHeight() - vi.y2, LColor::bottomarea); } Index: src/text.C =================================================================== --- src/text.C (revision 15012) +++ src/text.C (working copy) @@ -684,8 +684,11 @@ int LyXText::rightMargin(Paragraph const & par) const { + // FIXME: the correct way is to only call rightMargin() only + // within the main LyXText. The following test is thus bogus. + LyXText const & text = bv()->buffer()->text(); // We do not want rightmargins on inner texts. - if (bv()->text() != this) + if (&text != this) return 0; BufferParams const & params = bv()->buffer()->params(); @@ -1079,8 +1082,12 @@ maxasc += int(layoutasc * 2 / (2 + pars_[pit].getDepth())); maxdesc += int(layoutdesc * 2 / (2 + pars_[pit].getDepth())); + // FIXME: the correct way is to do the following is to move the + // following code in another method specially tailored for the + // main LyXText. The following test is thus bogus. + LyXText const & text = bv_owner->buffer()->text(); // Top and bottom margin of the document (only at top-level) - if (bv_owner->text() == this) { + if (&text == this) { if (pit == 0 && row.pos() == 0) maxasc += 20; if (pit + 1 == pit_type(pars_.size()) &&