]> git.lyx.org Git - features.git/commitdiff
improved comments in removeAutoInsets()
authorAllan Rae <rae@lyx.org>
Sun, 13 Jan 2002 06:42:58 +0000 (06:42 +0000)
committerAllan Rae <rae@lyx.org>
Sun, 13 Jan 2002 06:42:58 +0000 (06:42 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3351 a592a061-630c-0410-9148-cb99ea01b6c8

src/BufferView2.C
src/ChangeLog

index 8ad5d776a2eeca43070b9626d799200051bc6657..6072b4548345bb74ee85ee1708d6b4a1bb9f27ec 100644 (file)
@@ -117,22 +117,24 @@ bool BufferView::removeAutoInsets()
        bool found = false;
 
        // Trap the deletion of the paragraph the cursor is in.
-       // It should be almost impossible for the new cursor par to be
-       // deleted later on in this function.
-       // This is the way to segfault this now. Although you may have to do this
-       // multiple times: Have an InsetERT with an unknown command in it.
-       // View->DVI, move cursor between Error box and InsetERT and hit <Enter>,
-       // <down-arrow>, <Enter> again, View->DVI, BANG!
-       //
+       // Iterate until we find a paragraph that won't be immediately deleted.
+       // In reality this should mean we only execute the body of the while
+       // loop once at most.  However for safety we iterate rather than just
+       // make this an if() conditional.
        while ((cur_par_prev || cur_par_next)
               && text->setCursor(this,
                                  cur_par_prev ? cur_par_prev : cur_par_next,
                                  0)) {
-               // we just removed cur_par so have to fix the "cursor"
+               // We just removed cur_par so have to fix the "cursor"
                if (cur_par_prev) {
+                       // '.' = cur_par
+                       //  a -> a.
+                       // .
                        cur_par = cur_par_prev;
                        cur_pos = cur_par->size();
                } else {
+                       // .  -> .a
+                       //  a
                        cur_par = cur_par_next;
                        cur_pos = 0;
                }
@@ -155,7 +157,7 @@ bool BufferView::removeAutoInsets()
                        if (cur_par_prev) {
                                // '|' = par, '.' = cur_par, 'E' = error box
                                // First step below may occur before while{}
-                               //  a    |a      a     a    .a
+                               //  a    |a      a     a     a.
                                //  E -> .E -> |.E -> .  -> |b
                                // .      b      b    |b
                                //  b
index ca8aca84533956689e781112961dad5163a67bdf..0e26bc00367a00c7fe65ef3324a05cbdfe42cced 100644 (file)
@@ -6,6 +6,7 @@
        left is that an empty document with an error in the preamble can
        be made to report an error but no error box appears.  I don't know
        where it goes.
+       (removeAutoInsets): Improved comments.
 
 2002-01-13  John Levon  <moz@compsoc.man.ac.uk>