b->setReadonly(false);
b->fully_loaded(true);
- b->updateDocLang(b->params().language);
return b;
}
} else if (layout->labeltype == LABEL_SENSITIVE) {
// Search for the first float or wrap inset in the iterator
size_t i = it.depth();
- InsetBase * in;
+ InsetBase * in = 0;
while (i > 0) {
--i;
- in = &it[i].inset();
- if (in->lyxCode() == InsetBase::FLOAT_CODE
- || in->lyxCode() == InsetBase::WRAP_CODE)
+ InsetBase::Code const code = it[i].inset().lyxCode();
+ if (code == InsetBase::FLOAT_CODE ||
+ code == InsetBase::WRAP_CODE) {
+ in = &it[i].inset();
break;
+ }
}
- docstring const & type = in->getInsetName();
+ // FIXME Can getInsetName() return an empty name for wide or
+ // float insets? If not we can put the definition of type
+ // inside the if (in) clause and use that instead of
+ // if (!type.empty()).
+ docstring type;
+ if (in)
+ type = in->getInsetName();
if (!type.empty()) {
Floating const & fl = textclass.floats().getType(to_ascii(type));
}
}
- const_cast<Buffer &>(buf).tocBackend().update();
+ Buffer & cbuf = const_cast<Buffer &>(buf);
+ cbuf.tocBackend().update();
+ cbuf.structureChanged();
}
+void checkBufferStructure(Buffer & buffer, ParIterator const & par_it)
+{
+ if (par_it->layout()->labeltype == LABEL_COUNTER
+ && par_it->layout()->toclevel != LyXLayout::NOT_IN_TOC) {
+ buffer.tocBackend().updateItem(par_it);
+ buffer.structureChanged();
+ }
+}
+
} // namespace lyx