]> git.lyx.org Git - lyx.git/blobdiff - src/undo_funcs.C
Support for \begin{math}
[lyx.git] / src / undo_funcs.C
index e54aab24a7e1d7841a9739badc49d7393b939387..68b6576053d2efb2883bd13281847785af87f2ea 100644 (file)
@@ -188,8 +188,10 @@ bool textHandleUndo(BufferView * bv, Undo * undo)
                        tmppar3->previous(before);
                } else {
                        // Do we really enter here ??? (Jug)
-                       if (!before)
+                       if (!before && behind) {
                                bv->text->ownerParagraph(behind);
+                               tmppar3 = behind;
+                       }
                }
                if (tmppar4) {
                        tmppar4->next(behind);
@@ -211,21 +213,25 @@ bool textHandleUndo(BufferView * bv, Undo * undo)
                // calculate the endpar for redoing the paragraphs.
                if (behind)
                        endpar = behind->next();
-    
+
                tmppar = bv->buffer()->getParFromID(undo->number_of_cursor_par);
-               UpdatableInset* it = static_cast<UpdatableInset*>(tmppar3->inInset());
+               UpdatableInset* it = 0;
+               if (tmppar3)
+                       it = static_cast<UpdatableInset*>(tmppar3->inInset());
                if (it) {
-                       it->getLyXText(bv)->redoParagraphs(bv, it->getLyXText(bv)->cursor,
+                       it->getLyXText(bv)->redoParagraphs(bv,
+                                                          it->getLyXText(bv)->cursor,
                                                           endpar);
                        LyXFont font;
                        it->update(bv, font, false);
-                       // we now would have to rebreak the whole paragraph the undo-par
-                       // was in. How we do it here is not really true. We would have to
-                       // save this information in the undo-struct and then we could do
-                       // the right rebreak. Here we only handle the case where this
-                       // was in the actual paragraph, which not always is true.
+                       // we now would have to rebreak the whole paragraph the
+                       // undo-par was in. How we do it here is not really true.
+                       // We would have to save this information in the undo-struct
+                       // and then we could do the right rebreak. Here we only
+                       // handle the case where this was in the actual paragraph,
+                       // which not always is true.
                        bv->text->redoParagraphs(bv, bv->text->cursor,
-                                                                        bv->text->cursor.par());
+                                                bv->text->cursor.par());
                        if (tmppar){
                                it = static_cast<UpdatableInset*>(tmppar->inInset());
                                LyXText * t;
@@ -239,7 +245,7 @@ bool textHandleUndo(BufferView * bv, Undo * undo)
                                t->updateCounters(bv, t->cursor.row());
                        }
                        bv->text->setCursorIntern(bv, bv->text->cursor.par(),
-                                                                         bv->text->cursor.pos());
+                                                 bv->text->cursor.pos());
                } else {
                        bv->text->redoParagraphs(bv, bv->text->cursor, endpar);
                        if (tmppar) {