Fixup the fixup d0acc3e570: use editable()/isActive()

While 522516d9 was too strong and broke mathed, d0acc3e570 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.
This commit is contained in:
Jean-Marc Lasgouttes 2017-06-23 20:32:32 +02:00
parent b8e3615492
commit 13c3c1485b

View File

@ -562,7 +562,9 @@ bool DocIterator::fixIfBroken()
size_t n = slices_.size(); size_t n = slices_.size();
for (; i != n; ++i) { for (; i != n; ++i) {
CursorSlice & cs = slices_[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 // the whole slice is wrong, chop off this as well
--i; --i;
LYXERR(Debug::DEBUG, "fixIfBroken(): inset changed"); LYXERR(Debug::DEBUG, "fixIfBroken(): inset changed");