#include <config.h>
#include "paragraph_funcs.h"
+#include "paragraph_pimpl.h"
#include "buffer.h"
#include "ParagraphParameters.h"
#include "lyxtextclasslist.h"
// 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
// copy everything behind the break-position
// to the new paragraph
+
+#ifdef WITH_WARNINGS
+#warning this seems wrong
+#endif
+ /* FIXME: if !keepempty, empty() == true, then we reach
+ * here with size() == 0. So pos_end becomes - 1. Why
+ * doesn't this cause problems ???
+ */
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());
- tmp->bibkey = par->bibkey;
-
- par->bibkey = 0;
par->params().clear();
par->layout(bparams.getLyXTextClass().defaultLayout());
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();
+ }
+ }
}
}
-// Be carefull, this does not make any check at all.
-// This method has wrong name, it combined this par with the next par.
-// In that sense it is the reverse of break paragraph. (Lgb)
-void pasteParagraph(BufferParams const & bparams,
- Paragraph * par)
+void mergeParagraph(BufferParams const & bparams, Paragraph * par)
{
- // copy the next paragraph to this one
Paragraph * the_next = par->next();
// first the DTP-stuff