#include "gettext.h"
#include "iterators.h"
#include "lyxtextclasslist.h"
-
+#include "undo_funcs.h"
#include "insets/inseterror.h"
using std::pair;
if (realcut) {
buf->params().clear();
buf->bibkey = 0;
- buf->layout(textclasslist[current_view->buffer()->params.textclass].defaultLayoutName());
+ buf->layout(current_view->buffer()->params.getLyXTextClass().defaultLayout());
}
// paste the paragraphs again, if possible
if (doclear)
- startpar->next()->stripLeadingSpaces(textclass);
+ startpar->next()->stripLeadingSpaces();
if (startpar->hasSameLayout(startpar->next()) ||
- !startpar->next()->size()) {
+ startpar->next()->empty()) {
startpar->pasteParagraph(current_view->buffer()->params);
(*endpar) = startpar; // this because endpar gets deleted here!
}
// temporary set *par as previous of tmpbuf as we might have to realize
// the font.
tmpbuf->previous(*par);
- Paragraph::depth_type max_depth = (*par)->getMaxDepthAfter(current_view->buffer());
+
+ // make sure there is no class difference
+ SwitchLayoutsBetweenClasses(textclass, tc, tmpbuf,
+ current_view->buffer()->params);
+
+ Paragraph::depth_type max_depth = (*par)->getMaxDepthAfter();
+
while(tmpbuf) {
// if we have a negative jump so that the depth would go below
// 0 depth then we have to redo the delta to this new max depth
// only set this from the 2nd on as the 2nd depends for maxDepth
// still on *par
if (tmpbuf->previous() != (*par))
- max_depth = tmpbuf->getMaxDepthAfter(current_view->buffer());
+ max_depth = tmpbuf->getMaxDepthAfter();
// set the inset owner of this paragraph
tmpbuf->setInsetOwner((*par)->inInset());
for(pos_type i = 0; i < tmpbuf->size(); ++i) {
// now reset it to 0
buf->previous(0);
- // make sure there is no class difference
- SwitchLayoutsBetweenClasses(textclass, tc, buf,
- current_view->buffer()->params);
-
// make the buf exactly the same layout than
// the cursor paragraph
buf->makeSameLayout(*par);
if (lastbuffer->next() && paste_the_end) {
if (lastbuffer->next()->hasSameLayout(lastbuffer)) {
lastbuffer->pasteParagraph(current_view->buffer()->params);
- } else if (!lastbuffer->next()->size()) {
+ } else if (lastbuffer->next()->empty()) {
lastbuffer->next()->makeSameLayout(lastbuffer);
lastbuffer->pasteParagraph(current_view->buffer()->params);
- } else if (!lastbuffer->size()) {
+ } else if (lastbuffer->empty()) {
lastbuffer->makeSameLayout(lastbuffer->next());
lastbuffer->pasteParagraph(current_view->buffer()->params);
} else
- lastbuffer->next()->stripLeadingSpaces(tc);
+ lastbuffer->next()->stripLeadingSpaces();
}
// restore the simple cut buffer
buf = simple_cut_clone;
if (!par || c1 == c2)
return ret;
+ LyXTextClass const & tclass1 = textclasslist[c1];
+ LyXTextClass const & tclass2 = textclasslist[c2];
ParIterator end = ParIterator();
for (ParIterator it = ParIterator(par); it != end; ++it) {
par = *it;
- string const name = par->layout();
- LyXTextClass const & tclass = textclasslist[c2];
+ string const name = par->layout()->name();
+ bool hasLayout = tclass2.hasLayout(name);
- bool hasLayout = tclass.hasLayout(name);
-
- string lay = tclass.defaultLayoutName();
- if (hasLayout) {
- lay = name;
- } else {
- // not found: use default layout
- lay = tclass.defaultLayoutName();
- }
- par->layout(lay);
+ if (!hasLayout)
+ par->layout(tclass2.defaultLayout());
- if (name != par->layout()) {
+ if (!hasLayout && name != tclass1.defaultLayoutName()) {
++ret;
string const s = _("Layout had to be changed from\n")
+ name + _(" to ")
- + par->layout()
+ + par->layout()->name()
+ _("\nbecause of class conversion from\n")
- + textclasslist[c1].name() + _(" to ")
- + textclasslist[c2].name();
+ + tclass1.name() + _(" to ")
+ + tclass2.name();
+ freezeUndo();
InsetError * new_inset = new InsetError(s);
LyXText * txt = current_view->getLyXText();
LyXCursor cur = txt->cursor;
txt->insertInset(current_view, new_inset);
txt->fullRebreak(current_view);
txt->setCursorIntern(current_view, cur.par(), cur.pos());
+ unFreezeUndo();
}
}
return ret;