commit 869174e295683a750ba312d2c3ed4f925b5021aa
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Fri Jun 23 20:32:32 2017 +0200

    Fixup the fixup 4499680b: use editable()/isActive()
    
    While 1c07c0dc was too strong and broke mathed, 4499680b is too
    lenient and can accept insets (mathed/CommandInset, InsetInfo) that
    have a positive nargs() but are not editable (because they encapsulate
    something).
    
    Therefore the best solution for now is to use editable() in text and
    isActive() in mathed, until those two things are merged.
    
    Part of #10667.
    
    (cherry picked from commit 13c3c1485b68980c51658cef8fadf804982d75ee)
---
 src/DocIterator.cpp |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/DocIterator.cpp b/src/DocIterator.cpp
index 80e67ee..6548186 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");

Reply via email to