errorList.push_back(ErrorItem(_("Change tracking error"),
bformat(_("Unknown author index for insertion: %1$d\n"), aid),
par.id(), 0, par.size()));
-
change = Change(Change::UNCHANGED);
} else
change = Change(Change::INSERTED, bp.author_map[aid], ct);
errorList.push_back(ErrorItem(_("Change tracking error"),
bformat(_("Unknown author index for deletion: %1$d\n"), aid),
par.id(), 0, par.size()));
-
change = Change(Change::UNCHANGED);
} else
change = Change(Change::DELETED, bp.author_map[aid], ct);
Change change(Change::UNCHANGED);
while (lex.isOK()) {
-
readParToken(buf, par, lex, token, font, change, errorList);
lex.nextToken();
// It is better to erase the space (Dekel)
if (cur.pos() != cur.lastpos() && cpar.isLineSeparator(cur.pos()))
// FIXME: change tracking (MG)
- cpar.erase(cur.pos(), cur.buffer().params().trackChanges);
+ cpar.eraseChar(cur.pos(), cur.buffer().params().trackChanges);
// How should the layout for the new paragraph be?
int preserve_layout = 0;
while (!pars_[next_par].empty() && pars_[next_par].isNewline(0))
// FIXME: change tracking (MG)
- pars_[next_par].erase(0, cur.buffer().params().trackChanges);
+ pars_[next_par].eraseChar(0, cur.buffer().params().trackChanges);
ParIterator current_it(cur);
ParIterator last_it(cur);
return;
}
BOOST_ASSERT(cur.pos() > 0);
- if ((par.isLineSeparator(cur.pos() - 1)
- || par.isNewline(cur.pos() - 1))
- // FIXME: change tracking (MG)
- && par.lookupChange(cur.pos() - 1) != Change(Change::DELETED)) {
+ if ((par.isLineSeparator(cur.pos() - 1) || par.isNewline(cur.pos() - 1))
+ && !par.isDeleted(cur.pos() - 1)) {
static bool sent_space_message = false;
if (!sent_space_message) {
cur.message(_("You cannot type two spaces this way. "
}
}
- // FIXME: change tracking (MG)
- par.insertChar(cur.pos(), c, current_font, Change(Change::INSERTED));
+ par.insertChar(cur.pos(), c, current_font, cur.buffer().params().trackChanges);
setCursor(cur, cur.pit(), cur.pos() + 1, false, cur.boundary());
charInserted();
}
DocIterator it = cur.selectionBegin();
DocIterator et = cur.selectionEnd();
pit_type pit = it.pit();
- Change::Type const type = pars_[pit].lookupChange(it.pos()).type;
+ bool isDeleted = pars_[pit].isDeleted(it.pos());
for (; pit <= et.pit(); ++pit) {
pos_type left = ( pit == it.pit() ? it.pos() : 0 );
pos_type right =
( pit == et.pit() ? et.pos() : pars_[pit].size() + 1 );
- pars_[pit].acceptChange(left, right);
+ pars_[pit].acceptChanges(left, right);
}
- if (type == Change::DELETED) {
+ if (isDeleted) {
ParagraphList & plist = paragraphs();
if (it.pit() + 1 < et.pit())
pars_.erase(boost::next(plist.begin(), it.pit() + 1),
// Paragraph merge if appropriate:
// FIXME: change tracking (MG)
- if (pars_[it.pit()].lookupChange(pars_[it.pit()].size())
- == Change(Change::DELETED)) {
+ if (pars_[it.pit()].isDeleted(pars_[it.pit()].size())) {
setCursorIntern(cur, it.pit() + 1, 0);
backspacePos0(cur);
}
DocIterator it = cur.selectionBegin();
DocIterator et = cur.selectionEnd();
pit_type pit = it.pit();
- Change::Type const type = pars_[pit].lookupChange(it.pos()).type;
+ bool isInserted = pars_[pit].isInserted(it.pos());
for (; pit <= et.pit(); ++pit) {
pos_type left = ( pit == it.pit() ? it.pos() : 0 );
pos_type right =
( pit == et.pit() ? et.pos() : pars_[pit].size() + 1 );
- pars_[pit].rejectChange(left, right);
+ pars_[pit].rejectChanges(left, right);
}
- if (type == Change::INSERTED) {
+ if (isInserted) {
ParagraphList & plist = paragraphs();
if (it.pit() + 1 < et.pit())
pars_.erase(boost::next(plist.begin(), it.pit() + 1),
boost::next(plist.begin(), et.pit()));
// Paragraph merge if appropriate:
// FIXME: change tracking (MG)
- if (pars_[it.pit()].lookupChange(pars_[it.pit()].size())
- == Change(Change::INSERTED)) {
+ if (pars_[it.pit()].isInserted(pars_[it.pit()].size())) {
setCursorIntern(cur, it.pit() + 1, 0);
backspacePos0(cur);
}
setCursorIntern(cur, cur.pit(), cur.pos() + 1, false, cur.boundary());
needsUpdate = backspace(cur);
// FIXME: change tracking (MG)
- if (cur.paragraph().lookupChange(cur.pos()) == Change(Change::DELETED))
+ if (cur.paragraph().isDeleted(cur.pos()))
cur.posRight();
} else if (cur.pit() != cur.lastpit()) {
LCursor scur = cur;
// move forward after the paragraph break is DELETED
Paragraph & par = cur.paragraph();
// FIXME: change tracking (MG)
- if (par.lookupChange(par.size()) == Change(Change::DELETED))
+ if (par.isDeleted(par.size()))
setCursorIntern(cur, cur.pit() + 1, 0);
}
} else {
Paragraph & par = pars_[cur.pit() - 1];
// Take care of a just inserted para break:
// FIXME: change tracking (MG)
- if (par.lookupChange(par.size()) != Change(Change::INSERTED)) {
+ if (!par.isInserted(par.size())) {
// FIXME: change tracking (MG)
par.setChange(par.size(), Change(Change::DELETED));
setCursorIntern(cur, cur.pit() - 1, par.size());
setCursorIntern(cur, cur.pit(), cur.pos() - 1,
false, cur.boundary());
// FIXME: change tracking (MG)
- cur.paragraph().erase(cur.pos(), cur.buffer().params().trackChanges);
+ cur.paragraph().eraseChar(cur.pos(), cur.buffer().params().trackChanges);
}
if (cur.pos() == cur.lastpos())
spit += cur.pit();
Buffer & b = cur.buffer();
// FIXME: change tracking (MG)
- cur.paragraph().erase(cur.pos(), b.params().trackChanges);
+ cur.paragraph().eraseChar(cur.pos(), b.params().trackChanges);
if (!plist.empty()) {
pasteParagraphList(cur, plist, b.params().textclass,
b.errorList("Paste"));
Paragraph const & par = cur.paragraph();
std::ostringstream os;
- // FIXME: change tracking (MG)
- bool const show_change = par.lookupChange(cur.pos()) != Change(Change::UNCHANGED);
-
if (buf.params().trackChanges)
os << "[C] ";
- if (show_change) {
- Change change = par.lookupChange(cur.pos());
+ Change change = par.lookupChange(cur.pos());
+
+ if (change.type != Change::UNCHANGED) {
Author const & a = buf.params().authors().get(change.author);
os << to_utf8(_("Change: ")) << a.name();
if (!a.email().empty())
os << " (" << a.email() << ")";
- if (change.changetime)
- os << to_utf8(_(" at ")) << ctime(&change.changetime);
+ os << to_utf8(_(" at ")) << ctime(&change.changetime);
os << " : ";
}
// for captions, we want the abbreviation of the float type
if (layout->labeltype == LABEL_SENSITIVE) {
// Search for the first float or wrap inset in the iterator
- size_t i = cur.depth();
- while (i > 0) {
- --i;
+ for (int i = cur.depth(); --i >= 0; ) {
InsetBase * const in = &cur[i].inset();
if (in->lyxCode() == InsetBase::FLOAT_CODE
|| in->lyxCode() == InsetBase::WRAP_CODE) {
- name = in->getInsetName();
+ name = to_utf8(in->getInsetName());
break;
}
}