X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph_funcs.C;h=18e6855c76fc1ac308fc87834bbd43ee2c4d2b72;hb=498f06d43a0f2000c3f704db1ea39fda3c819fe6;hp=c5b7171fa11e0ca64716a1b814ac7f9f64b147cf;hpb=125a79c569f86369a8b3699bfb4e11d57c072d15;p=lyx.git diff --git a/src/paragraph_funcs.C b/src/paragraph_funcs.C index c5b7171fa1..18e6855c76 100644 --- a/src/paragraph_funcs.C +++ b/src/paragraph_funcs.C @@ -11,6 +11,7 @@ #include #include "paragraph_funcs.h" +#include "paragraph_pimpl.h" #include "buffer.h" #include "ParagraphParameters.h" #include "lyxtextclasslist.h" @@ -34,6 +35,9 @@ void breakParagraph(BufferParams const & bparams, // remember to set the inset_owner tmp->setInsetOwner(par->inInset()); + if (bparams.tracking_changes) + tmp->trackChanges(); + // this is an idea for a more userfriendly layout handling, I will // see what the users say @@ -73,19 +77,23 @@ void breakParagraph(BufferParams const & bparams, pos_type pos_end = par->size() - 1; pos_type i = pos; pos_type j = pos; + for (; i <= pos_end; ++i) { + Change::Type change(par->lookupChange(i)); par->cutIntoMinibuffer(bparams, i); - if (tmp->insertFromMinibuffer(j - pos)) + if (tmp->insertFromMinibuffer(j - pos)) { + tmp->pimpl_->setChange(j - pos, change); ++j; + } } for (i = pos_end; i >= pos; --i) { - par->erase(i); + par->pimpl_->eraseIntern(i); } } if (pos) return; - + tmp->params().lineTop(par->params().lineTop()); tmp->params().pagebreakTop(par->params().pagebreakTop()); tmp->params().spaceTop(par->params().spaceTop()); @@ -102,6 +110,15 @@ void breakParagraph(BufferParams const & bparams, par->setLabelWidthString(tmp->params().labelWidthString()); par->params().depth(tmp->params().depth()); } + + // subtle, but needed to get empty pars working right + if (bparams.tracking_changes) { + if (!par->size()) { + par->cleanChanges(); + } else if (!tmp->size()) { + tmp->cleanChanges(); + } + } }