]> git.lyx.org Git - lyx.git/commitdiff
Make sure that inset-forall does not skip insets
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 23 Jan 2013 22:02:05 +0000 (23:02 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 25 Jan 2013 09:57:10 +0000 (10:57 +0100)
This could happen with
  inset-forall Note:Note char-delete-forward
when there where consecutive note insets.

src/BufferView.cpp

index 4aa3360017e96c507328d3f066222132eade5feb..43420209cceab24a9d4101b4855c72ad797a437e 100644 (file)
@@ -1809,7 +1809,7 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                        cur.forwardInset();
                cur.beginUndoGroup();
                while(cur && iterations < max_iter) {
-                       Inset * ins = cur.nextInset();
+                       Inset * const ins = cur.nextInset();
                        if (!ins)
                                break;
                        docstring insname = ins->layoutName();
@@ -1825,7 +1825,9 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                                        break;
                                insname = insname.substr(0, i);
                        }
-                       cur.forwardInset();
+                       // if we did not delete the inset, skip it
+                       if (!cur.nextInset() || cur.nextInset() == ins)
+                               cur.forwardInset();
                }
                cur.endUndoGroup();
                cur = savecur;