#include "buffer_funcs.h"
#include "BufferParams.h"
#include "BufferView.h"
+#include "Changes.h"
#include "Cursor.h"
#include "debug.h"
#include "ErrorList.h"
#include "FuncRequest.h"
#include "gettext.h"
#include "InsetIterator.h"
+#include "InsetList.h"
#include "Language.h"
#include "lfuns.h"
#include "LyXFunc.h"
#include "mathed/InsetMath.h"
#include "mathed/MathSupport.h"
+#include "support/limited_stack.h"
#include "support/lstrings.h"
+#include "support/docstream.h"
#include "frontends/Clipboard.h"
#include "frontends/Selection.h"
// Set the inset owner of this paragraph.
tmpbuf->setInsetOwner(pars[pit].inInset());
for (pos_type i = 0; i < tmpbuf->size(); ++i) {
- if (tmpbuf->getChar(i) == Paragraph::META_INSET &&
+ if (tmpbuf->isInset(i) &&
!pars[pit].insetAllowed(tmpbuf->getInset(i)->lyxCode()))
// do not track deletion of invalid insets
tmpbuf->eraseChar(i--, false);
ParIterator fend = par_iterator_end(in);
for (; fpit != fend; ++fpit) {
- InsetList::const_iterator lit = fpit->insetlist.begin();
- InsetList::const_iterator eit = fpit->insetlist.end();
+ InsetList::const_iterator lit = fpit->insetList().begin();
+ InsetList::const_iterator eit = fpit->insetList().end();
for (; lit != eit; ++lit) {
switch (lit->inset->lyxCode()) {
// This is invalid outside of ERT, so we need to change it
// to the buffer language.
if (it->ownerCode() == ERT_CODE || it->ownerCode() == LISTINGS_CODE) {
- it->changeLanguage(buf.params(), latex_language,
- buf.getLanguage());
+ it->changeLanguage(buf.params(), latex_language, buf.language());
}
it->setInsetOwner(0);
}
// character styles
InsetIterator const i_end = inset_iterator_end(in);
for (InsetIterator it = inset_iterator_begin(in); it != i_end; ++it) {
- if (it->lyxCode() == FLEX_CODE) {
- InsetFlex & inset =
- static_cast<InsetFlex &>(*it);
- string const name = inset.params().name;
- InsetLayout const il =
- tclass2.insetlayout(from_utf8(name));
- inset.setLayout(il);
- if (il.labelstring == from_utf8("UNDEFINED")) {
- // The flex inset is undefined in tclass2
- docstring const s = bformat(_(
- "Flex inset %1$s is "
- "undefined because of class "
- "conversion from\n%2$s to %3$s"),
- from_utf8(name), from_utf8(tclass1.name()),
- from_utf8(tclass2.name()));
- // To warn the user that something had to be done.
- errorlist.push_back(ErrorItem(
- _("Undefined flex inset"),
- s, it.paragraph().id(), it.pos(), it.pos() + 1));
- }
- }
+ InsetCollapsable * inset = it->asInsetCollapsable();
+ if (!inset)
+ continue;
+ if (inset->lyxCode() != FLEX_CODE)
+ // FIXME: Should we verify all InsetCollapsable?
+ continue;
+ docstring const name = inset->name();
+ InsetLayout const & il = tclass2.insetlayout(name);
+ inset->setLayout(il);
+ if (il.labelstring != from_utf8("UNDEFINED"))
+ continue;
+ // The flex inset is undefined in tclass2
+ docstring const s = bformat(_(
+ "Flex inset %1$s is "
+ "undefined because of class "
+ "conversion from\n%2$s to %3$s"),
+ name, from_utf8(tclass1.name()),
+ from_utf8(tclass2.name()));
+ // To warn the user that something had to be done.
+ errorlist.push_back(ErrorItem(
+ _("Undefined flex inset"),
+ s, it.paragraph().id(), it.pos(), it.pos() + 1));
}
}