#endif
using std::pair;
+using lyx::pos_type;
extern BufferView * current_view;
// only within one paragraph
if (realcut)
buf = new Paragraph;
- Paragraph::size_type i = start;
+ pos_type i = start;
if (end > startpar->size())
end = startpar->size();
for (; i < end; ++i) {
startpar->pasteParagraph(current_view->buffer()->params);
(*endpar) = startpar; // this because endpar gets deleted here!
}
+ // this paragraph's are of noone's owner!
+ Paragraph * p = buf;
+ while(p) {
+ p->setInsetOwner(0);
+ p = p->next();
+ }
}
return true;
}
textclass = tc;
- if (!endpar ||
- startpar == endpar) {
+ if (!endpar || startpar == endpar) {
// only within one paragraph
buf = new Paragraph;
- Paragraph::size_type i = start;
+ pos_type i = start;
if (end > startpar->size())
end = startpar->size();
for (; i < end; ++i) {
// copy more than one paragraph
// clone the paragraphs within the selection
Paragraph * tmppar = startpar;
- buf = new Paragraph(*tmppar);
+ buf = new Paragraph(*tmppar, false);
Paragraph * tmppar2 = buf;
while (tmppar != endpar
&& tmppar->next()) {
tmppar = tmppar->next();
- tmppar2->next(new Paragraph(*tmppar));
+ tmppar2->next(new Paragraph(*tmppar, false));
tmppar2->next()->previous(tmppar2);
tmppar2 = tmppar2->next();
}
tmppar2->next(0);
// the buf paragraph is too big
- Paragraph::size_type tmpi2 = start;
+ pos_type tmpi2 = start;
for (; tmpi2; --tmpi2)
buf->erase(0);
while (tmppar2->size() > tmpi2) {
tmppar2->erase(tmppar2->size() - 1);
}
+ // this paragraph's are of noone's owner!
+ tmppar = buf;
+ while(tmppar) {
+ tmppar->setInsetOwner(0);
+ tmppar = tmppar->next();
+ }
}
return true;
}
// There are two cases: cutbuffer only one paragraph or many
if (!buf->next()) {
// only within a paragraph
- Paragraph * tmpbuf = new Paragraph(*buf);
+ Paragraph * tmpbuf = new Paragraph(*buf, false);
// Some provisions should be done here for checking
// if we are inserting at the beginning of a
// make a copy of the simple cut_buffer
Paragraph * tmpbuf = buf;
- Paragraph * simple_cut_clone = new Paragraph(*tmpbuf);
+ Paragraph * simple_cut_clone = new Paragraph(*tmpbuf, false);
Paragraph * tmpbuf2 = simple_cut_clone;
while (tmpbuf->next()) {
tmpbuf = tmpbuf->next();
- tmpbuf2->next(new Paragraph(*tmpbuf));
+ tmpbuf2->next(new Paragraph(*tmpbuf, false));
tmpbuf2->next()->previous(tmpbuf2);
tmpbuf2 = tmpbuf2->next();
}