X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FParagraph.cpp;h=991ab14a7527d65083207e171b9e34b8fb720fce;hb=ea6aed5b8bf38366aaa1eb15ce1b9f13de76987f;hp=09c13cc43b10635bf1b42bb2eb81becbdb2f0fc0;hpb=396a90decb79a13a0ead2072cdacd52dcdf07842;p=lyx.git diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 09c13cc43b..991ab14a75 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -83,6 +83,8 @@ public: Private(Paragraph * owner, Layout const & layout); /// "Copy constructor" Private(Private const &, Paragraph * owner); + /// Copy constructor from \p beg to \p end + Private(Private const &, Paragraph * owner, pos_type beg, pos_type end); /// void insertChar(pos_type pos, char_type c, Change const & change); @@ -247,6 +249,35 @@ Paragraph::Private::Private(Private const & p, Paragraph * owner) } +Paragraph::Private::Private(Private const & p, Paragraph * owner, + pos_type beg, pos_type end) + : owner_(owner), inset_owner_(p.inset_owner_), + insetlist_(p.insetlist_, beg, end), + params_(p.params_), changes_(p.changes_), + begin_of_body_(p.begin_of_body_), words_(p.words_), + layout_(p.layout_) +{ + id_ = paragraph_id++; + if (beg >= pos_type(p.text_.size())) + return; + text_ = p.text_.substr(beg, end - beg); + + FontList::const_iterator fcit = fontlist_.begin(); + FontList::const_iterator fend = fontlist_.end(); + for (; fcit != fend; ++fcit) { + if (fcit->pos() < beg) + continue; + if (fcit->pos() >= end) { + // Add last entry in the fontlist_. + fontlist_.set(text_.size() - 1, fcit->font()); + break; + } + // Add a new entry in the fontlist_. + fontlist_.set(fcit->pos() - beg, fcit->font()); + } +} + + bool Paragraph::isChanged(pos_type start, pos_type end) const { LASSERT(start >= 0 && start <= size(), /**/); @@ -1060,6 +1091,14 @@ Paragraph::Paragraph(Paragraph const & par) } +Paragraph::Paragraph(Paragraph const & par, pos_type beg, pos_type end) + : itemdepth(par.itemdepth), + d(new Paragraph::Private(*par.d, this, beg, end)) +{ + registerWords(); +} + + Paragraph & Paragraph::operator=(Paragraph const & par) { // needed as we will destroy the private part before copying it @@ -1836,7 +1875,7 @@ bool Paragraph::latex(BufferParams const & bparams, bool asdefault = forcePlainLayout(); Layout const & style = asdefault ? - bparams.documentClass().emptyLayout() : + bparams.documentClass().plainLayout() : *d->layout_; // Current base font for all inherited font changes, without any @@ -2379,7 +2418,7 @@ void Paragraph::setLayout(Layout const & layout) void Paragraph::setPlainOrDefaultLayout(DocumentClass const & tclass) { if (usePlainLayout()) - setLayout(tclass.emptyLayout()); + setLayout(tclass.plainLayout()); else setLayout(tclass.defaultLayout()); }