And incidently, I just found one of the 'off by some' [;-}] error when
having a look at setLayout()'s undo...

--------

Note that there is quite some potential to remove code in text2.C along the
lines of:


-       ParagraphList::iterator endpit = boost::next(send_cur.par());
-       ParagraphList::iterator undoendpit = endpit;
-       ParagraphList::iterator pars_end = ownerParagraphs().end();
-
-       if (endpit != pars_end && endpit->getDepth()) {
-               while (endpit != pars_end && endpit->getDepth()) {
-                       ++endpit;
-                       undoendpit = endpit;
-               }
-       } else if (endpit != pars_end) {
-               // because of parindents etc.
-               ++endpit;
-       }
-
-       setUndo(bv(), Undo::EDIT, sstart_cur.par(), boost::prior(undoendpit));
+       setUndo(bv(), Undo::EDIT, sstart_cur.par(), send_cur.par());

Or is there anything important hidden in that code?
A seemingly working patch is attached...

Andre'

-- 
Those who desire to give up Freedom in order to gain Security, will not have,
nor do they deserve, either one.     (T. Jefferson or B. Franklin or both...)
Index: lyxtext.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxtext.h,v
retrieving revision 1.174
diff -u -p -r1.174 lyxtext.h
--- lyxtext.h   23 May 2003 15:30:46 -0000      1.174
+++ lyxtext.h   5 Jun 2003 12:10:34 -0000
@@ -127,8 +127,7 @@ public:
        /** set layout over selection and make a total rebreak of
          those paragraphs
          */
-       ParagraphList::iterator
-       setLayout(LyXCursor & actual_cursor,
+       void setLayout(LyXCursor & actual_cursor,
                  LyXCursor & selection_start,
                  LyXCursor & selection_end,
                  string const & layout);
Index: text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.368
diff -u -p -r1.368 text2.C
--- text2.C     5 Jun 2003 11:34:54 -0000       1.368
+++ text2.C     5 Jun 2003 12:10:34 -0000
@@ -374,26 +374,11 @@ void LyXText::makeFontEntriesLayoutSpeci
 }
 
 
-ParagraphList::iterator
-LyXText::setLayout(LyXCursor & cur, LyXCursor & sstart_cur,
+void LyXText::setLayout(LyXCursor & cur, LyXCursor & sstart_cur,
                   LyXCursor & send_cur,
                   string const & layout)
 {
-       ParagraphList::iterator endpit = boost::next(send_cur.par());
-       ParagraphList::iterator undoendpit = endpit;
-       ParagraphList::iterator pars_end = ownerParagraphs().end();
-
-       if (endpit != pars_end && endpit->getDepth()) {
-               while (endpit != pars_end && endpit->getDepth()) {
-                       ++endpit;
-                       undoendpit = endpit;
-               }
-       } else if (endpit != pars_end) {
-               // because of parindents etc.
-               ++endpit;
-       }
-
-       setUndo(bv(), Undo::EDIT, sstart_cur.par(), boost::prior(undoendpit));
+       setUndo(bv(), Undo::EDIT, sstart_cur.par(), send_cur.par());
 
        // ok we have a selection. This is always between sstart_cur
        // and sel_end cursor
@@ -419,8 +404,6 @@ LyXText::setLayout(LyXCursor & cur, LyXC
                cur.par(pit);
                ++pit;
        } while (pit != epit);
-
-       return endpit;
 }
 
 
@@ -455,9 +438,10 @@ void LyXText::setLayout(string const & l
                return;
        }
 
-       ParagraphList::iterator endpit = setLayout(cursor, selection.start,
-                                                  selection.end, layout);
-       redoParagraphs(selection.start, endpit);
+       lyxerr << "sel: " << selection.start.par()->id() << " - " <<
+               selection.end.par()->id() << "\n";
+       setLayout(cursor, selection.start, selection.end, layout);
+       redoParagraphs(selection.start, boost::next(selection.end.par()));
 
        // we have to reset the selection, because the
        // geometry could have changed

Reply via email to