InsetCaption::InsetCaption(Buffer * buf, string const & type)
- : InsetText(buf, InsetText::PlainLayout), type_(type)
+ : InsetText(buf, InsetText::PlainLayout),
+ labelwidth_(0), is_subfloat_(false), type_(type)
{
setDrawFrame(true);
setFrameColor(Color_collapsableframe);
}
-void InsetCaption::addToToc(DocIterator const & cpit, bool output_active) const
+void InsetCaption::addToToc(DocIterator const & cpit, bool output_active,
+ UpdateType utype) const
{
string const & type = floattype_.empty() ? "senseless" : floattype_;
DocIterator pit = cpit;
pit.push_back(CursorSlice(const_cast<InsetCaption &>(*this)));
- docstring str = full_label_;
- int length = output_active ? INT_MAX : TOC_ENTRY_LENGTH;
- text().forOutliner(str, length);
- buffer().tocBackend().builder(type)->captionItem(pit, str, output_active);
+ int length = (utype == OutputUpdate) ?
+ // For output (e.g. xhtml) all (bug #8603) or nothing
+ (output_active ? INT_MAX : 0) :
+ // TOC for LyX interface
+ TOC_ENTRY_LENGTH;
+ docstring str;
+ if (length > 0) {
+ str = full_label_;
+ text().forOutliner(str, length);
+ }
+ buffer().tocBackend().builder(type).captionItem(pit, str, output_active);
// Proceed with the rest of the inset.
- InsetText::addToToc(cpit, output_active);
+ InsetText::addToToc(cpit, output_active, utype);
}
if (first_arg == "changetype") {
string const type = cmd.getArg(1);
status.setOnOff(type == type_);
- bool varia = type != "LongTableNoNumber";
+ bool varia = type != "Unnumbered";
// check if the immediate parent inset allows caption variation
if (cur.depth() > 1) {
varia = cur[cur.depth() - 2].inset().allowsCaptionVariation(type);
string const our_class = "float-caption-" + type_;
size_t const loc = attr.find("class='");
if (loc != string::npos)
- attr.insert(loc + 7, our_class+ " ");
+ attr.insert(loc + 7, our_class + " ");
else
attr = attr + " class='" + our_class + "'";
}
rp.par_end = paragraphs().size();
// Output the contents of the inset
+ if (!paragraphs().empty())
+ os.texrow().forceStart(paragraphs()[0].id(), 0);
latexParagraphs(buffer(), text(), os, rp);
runparams.encoding = rp.encoding;