From abe620d1ee5c8a1164051d968b4e6ca8961c27f2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Tue, 27 Mar 2007 05:53:14 +0000 Subject: [PATCH] * src/toc.C: allow upwards movement to first paragraph (bug 3131) fix from Bernhard Roider. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17582 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/toc.C | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/toc.C b/src/toc.C index 0a44162032..154da60b15 100644 --- a/src/toc.C +++ b/src/toc.C @@ -63,27 +63,24 @@ void outline(OutlineOp mode, LCursor & cur) } ParagraphList::iterator dest = start; // Move out (up) from this header - if (dest != bgn) - --dest; - else + if (dest == bgn) break; // Search previous same-level header above - for (; dest != bgn; --dest) { + do { + --dest; toclevel = dest->layout()->toclevel; - if (toclevel != LyXLayout::NOT_IN_TOC - && toclevel <= thistoclevel) { - break; - } - } + } while(dest != bgn && + (toclevel == LyXLayout::NOT_IN_TOC + || toclevel > thistoclevel)); // Not found; do nothing - if (dest == bgn) + if (toclevel == LyXLayout::NOT_IN_TOC || toclevel > thistoclevel) break; pit_type const newpit = std::distance(bgn, dest); pit_type const len = std::distance(start, finish); pit_type const deletepit = pit + len; recordUndo(cur, Undo::ATOMIC, newpit, deletepit - 1); pars.insert(dest, start, finish); - start = boost::next(bgn, deletepit); + start = boost::next(pars.begin(), deletepit); pit = newpit; pars.erase(start, finish); break; @@ -117,7 +114,7 @@ void outline(OutlineOp mode, LCursor & cur) // One such was found: pit_type newpit = std::distance(bgn, dest); pit_type const len = std::distance(start, finish); - recordUndo(cur, Undo::ATOMIC, pit, newpit -1); + recordUndo(cur, Undo::ATOMIC, pit, newpit - 1); pars.insert(dest, start, finish); start = boost::next(bgn, pit); pit = newpit - len; -- 2.39.5