Disallow the insertion of multiplenon-item arguments of the same type in a sequence of merged environment pars

This commit is contained in:
Juergen Spitzmueller 2012-12-10 09:19:56 +01:00
parent aad1f4ce78
commit 99ee47f0cd

View File

@ -2533,8 +2533,29 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
args.find(arg);
if (lait != args.end()) {
enable = true;
InsetList::const_iterator it = cur.paragraph().insetList().begin();
InsetList::const_iterator const end = cur.paragraph().insetList().end();
pit_type pit = cur.pit();
pit_type lastpit = cur.pit();
if (lay.isEnvironment() && !prefixIs(arg, "item:")) {
// In a sequence of "merged" environment layouts, we only allow
// non-item arguments once.
lastpit = cur.lastpit();
// get the first paragraph in sequence with this layout
depth_type const current_depth = cur.paragraph().params().depth();
while (true) {
if (pit == 0)
break;
Paragraph cpar = pars_[pit - 1];
if (cpar.layout() == lay && cpar.params().depth() == current_depth)
--pit;
else
break;
}
}
for (; pit <= lastpit; ++pit) {
if (pars_[pit].layout() != lay)
break;
InsetList::const_iterator it = pars_[pit].insetList().begin();
InsetList::const_iterator end = pars_[pit].insetList().end();
for (; it != end; ++it) {
if (it->inset->lyxCode() == ARG_CODE) {
InsetArgument const * ins =
@ -2546,6 +2567,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
}
}
}
}
} else
enable = false;
break;