diff --git a/src/DocIterator.cpp b/src/DocIterator.cpp index 80e67ee2cf..6548186fd7 100644 --- a/src/DocIterator.cpp +++ b/src/DocIterator.cpp @@ -535,7 +535,9 @@ bool DocIterator::fixIfBroken() size_t n = slices_.size(); for (; i != n; ++i) { CursorSlice & cs = slices_[i]; - if (&cs.inset() != inset || cs.nargs() == 0) { + if (&cs.inset() != inset + || (cs.inset().inMathed() ? ! cs.inset().isActive() + : ! cs.inset().editable())) { // the whole slice is wrong, chop off this as well --i; LYXERR(Debug::DEBUG, "fixIfBroken(): inset changed");