#include "support/lyxalgo.h"
#include "support/lyxtime.h"
#include "support/textutils.h"
+#include "support/unique_ptr.h"
#include <sstream>
Text::Text(InsetText * owner, Text const & text)
- : owner_(owner)
+ : owner_(owner), pars_(text.pars_)
{
- pars_ = text.pars_;
ParagraphList::iterator const end = pars_.end();
ParagraphList::iterator it = pars_.begin();
for (; it != end; ++it)
} else if (token == "\\SpecialChar" ||
(token == "\\SpecialCharNoPassThru" &&
!par.layout().pass_thru && !inset().isPassThru())) {
- auto_ptr<Inset> inset;
- inset.reset(new InsetSpecialChar);
+ auto inset = make_unique<InsetSpecialChar>();
inset->read(lex);
inset->setBuffer(*buf);
par.insertInset(par.size(), inset.release(), font, change);
docstring const s = ltrim(lex.getDocString(), "\\");
par.insert(par.size(), s, font, change);
} else if (token == "\\IPAChar") {
- auto_ptr<Inset> inset;
- inset.reset(new InsetIPAChar);
+ auto inset = make_unique<InsetIPAChar>();
inset->read(lex);
inset->setBuffer(*buf);
par.insertInset(par.size(), inset.release(), font, change);
} else if (token == "\\backslash") {
par.appendChar('\\', font, change);
} else if (token == "\\LyXTable") {
- auto_ptr<Inset> inset(new InsetTabular(buf));
+ auto inset = make_unique<InsetTabular>(buf);
inset->read(lex);
par.insertInset(par.size(), inset.release(), font, change);
} else if (token == "\\change_unchanged") {
else {
docstring const & lay = cur.paragraph().usePlainLayout()
? tclass.plainLayoutName() : tclass.defaultLayoutName();
- setLayout(cur, lay);
+ if (lay != layout.name())
+ setLayout(cur, lay);
}
return;
}
if (lyxrc.auto_number) {
static docstring const number_operators = from_ascii("+-/*");
static docstring const number_unary_operators = from_ascii("+-");
- static docstring const number_seperators = from_ascii(".,:");
+ static docstring const number_separators = from_ascii(".,:");
if (cur.current_font.fontInfo().number() == FONT_ON) {
if (!isDigitASCII(c) && !contains(number_operators, c) &&
- !(contains(number_seperators, c) &&
+ !(contains(number_separators, c) &&
cur.pos() != 0 &&
cur.pos() != cur.lastpos() &&
tm.displayFont(pit, cur.pos()).fontInfo().number() == FONT_ON &&
) {
setCharFont(pit, cur.pos() - 1, cur.current_font,
tm.font_);
- } else if (contains(number_seperators, c)
+ } else if (contains(number_separators, c)
&& cur.pos() >= 2
&& tm.displayFont(pit, cur.pos() - 2).fontInfo().number() == FONT_ON) {
setCharFont(pit, cur.pos() - 1, cur.current_font,
return dissolveInset(cur);
if (!par.isMergedOnEndOfParDeletion(cur.buffer()->params().track_changes)) {
+ cur.recordUndo(DELETE_UNDO);
par.setChange(cur.pos(), Change(Change::DELETED));
cur.forwardPos();
needsUpdate = true;
if (needsUpdate) {
// Make sure the cursor is correct. Is this really needed?
// No, not really... at least not here!
- cur.text()->setCursor(cur.top(), cur.pit(), cur.pos());
+ cur.top().setPitPos(cur.pit(), cur.pos());
cur.checkBufferStructure();
}
// A singlePar update is not enough in this case.
// cur.screenUpdateFlags(Update::Force);
- setCursor(cur.top(), cur.pit(), cur.pos());
+ cur.top().setPitPos(cur.pit(), cur.pos());
return needsUpdate;
}