- Buffer & buf = *bv.buffer();
- lyxerr << "undo, performing: " << undo << std::endl;
- ParIterator pit = num2pit(buf, undo.text);
- LyXText * text = pit.text(buf);
- ParagraphList & plist = text->paragraphs();
-
- // remove new stuff between first and last
- {
- ParagraphList::iterator first = plist.begin();
- advance(first, undo.first_par);
- ParagraphList::iterator last = plist.begin();
- advance(last, plist.size() - undo.end_par);
- plist.erase(first, ++last);
- }
-
- // re-insert old stuff instead
- if (plist.empty()) {
- plist.assign(undo.pars.begin(), undo.pars.end());
- } else {
- ParagraphList::iterator first = plist.begin();
- advance(first, undo.first_par);
- plist.insert(first, undo.pars.begin(), undo.pars.end());
- }
-
- // set cursor
- lyxerr << "undo, text: " << undo.text
- << " inset: " << pit.inset()
- << " index: " << undo.index
- << " par: " << undo.cursor_par
- << " pos: " << undo.cursor_pos
- << std::endl;
-
- text->updateCounters();
-
- // rebreak the entire lyxtext
-#warning needed?
- text->redoParagraphs(buf.paragraphs().begin(), buf.paragraphs().end());
- bv.cursor().resetAnchor();