On Thu, Oct 19, 2006 at 08:25:38PM +0300, Martin Vermeer wrote: > On Thu, Oct 19, 2006 at 05:38:09PM +0200, Jean-Marc Lasgouttes wrote: > > >>>>> "Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes: > > > > Martin> See attached. Seems to work for me (but I didn't look in all > > Martin> the corners) > > > > Martin, I think the patch does not work. Here is what I did > > > > - load intro > > - select Chapter1 > > - press down > > - in main window, do Ctrl-Z > > > > What I see is a mix of both chapters and the chapter 2 heading seems to > > be gone. > > > > JMarc > > Try the attached (for 1.4.x) > > I still see a crash upon undoing "Up" in the last section. Don't > understand it. Could you have a look? > > - Martin
Rather try this one. PBCAK. - Martin
Index: toc.C
===================================================================
--- toc.C (revision 15221)
+++ toc.C (working copy)
@@ -170,7 +170,6 @@
void outline(OutlineOp mode, LCursor & cur)
{
- recordUndo(cur);
Buffer * buf = & cur.buffer();
pit_type & pit = cur.pit();
ParagraphList & pars = buf->text().paragraphs();
@@ -212,6 +211,8 @@
pit_type const newpit = std::distance(pars.begin(), q);
pit_type const len = std::distance(s, p);
pit += len;
+ pit = std::min(pit, cur.lastpit());
+ recordUndo(cur, Undo::ATOMIC, newpit, pit);
pars.insert(q, s, p);
s = boost::next(pars.begin(), pit);
ParagraphList::iterator t = boost::next(s, len);
@@ -243,6 +244,7 @@
}
pit_type const newpit = std::distance(pars.begin(), q);
pit_type const len = std::distance(s, p);
+ recordUndo(cur, Undo::ATOMIC, pit, newpit);
pars.insert(q, s, p);
s = boost::next(pars.begin(), pit);
ParagraphList::iterator t = boost::next(s, len);
@@ -251,6 +253,7 @@
break;
}
case In:
+ recordUndo(cur);
for (; lit != lend; ++lit) {
if ((*lit)->toclevel == thistoclevel + 1 &&
s->layout()->labeltype ==
(*lit)->labeltype) {
@@ -260,6 +263,7 @@
}
break;
case Out:
+ recordUndo(cur);
for (; lit != lend; ++lit) {
if ((*lit)->toclevel == thistoclevel - 1 &&
s->layout()->labeltype ==
(*lit)->labeltype) {
pgpFsAzxjPr8B.pgp
Description: PGP signature
