}
-void InsetLabel::addToToc(DocIterator const & cpit, bool output_active) const
+void InsetLabel::addToToc(DocIterator const & cpit, bool output_active,
+ UpdateType) const
{
docstring const & label = getParam("name");
- Toc & toc = buffer().tocBackend().toc("label");
+ shared_ptr<Toc> toc = buffer().tocBackend().toc("label");
if (buffer().insetLabel(label) != this) {
- toc.push_back(TocItem(cpit, 0, screen_label_, output_active));
- return;
- }
- toc.push_back(TocItem(cpit, 0, screen_label_, output_active));
- Buffer::References const & refs = buffer().references(label);
- Buffer::References::const_iterator it = refs.begin();
- Buffer::References::const_iterator end = refs.end();
- for (; it != end; ++it) {
- DocIterator const ref_pit(it->second);
- if (it->first->lyxCode() == MATH_REF_CODE)
- toc.push_back(TocItem(ref_pit, 1,
- it->first->asInsetMath()->asRefInset()->screenLabel(),
- output_active));
- else
- toc.push_back(TocItem(ref_pit, 1,
- static_cast<InsetRef *>(it->first)->screenLabel(),
- output_active));
+ toc->push_back(TocItem(cpit, 0, screen_label_, output_active));
+ } else {
+ toc->push_back(TocItem(cpit, 0, screen_label_, output_active));
+ Buffer::References const & refs = buffer().references(label);
+ Buffer::References::const_iterator it = refs.begin();
+ Buffer::References::const_iterator end = refs.end();
+ for (; it != end; ++it) {
+ DocIterator const ref_pit(it->second);
+ if (it->first->lyxCode() == MATH_REF_CODE)
+ toc->push_back(TocItem(ref_pit, 1,
+ it->first->asInsetMath()->asRefInset()->screenLabel(),
+ output_active));
+ else
+ toc->push_back(TocItem(ref_pit, 1,
+ static_cast<InsetRef *>(it->first)->getTOCString(),
+ output_active));
+ }
}
}
case LFUN_LABEL_COPY_AS_REFERENCE:
enabled = true;
break;
+ case LFUN_INSET_MODIFY:
+ if (cmd.getArg(0) == "changetype") {
+ // this is handled by InsetCommand,
+ // but not by InsetLabel.
+ enabled = false;
+ break;
+ }
default:
return InsetCommand::getStatus(cur, cmd, status);
}
switch (cmd.action()) {
case LFUN_INSET_MODIFY: {
+ // the only other option here is "changetype", and we
+ // do not have different types.
if (cmd.getArg(0) != "label") {
cur.undispatched();
return;
// id here to get the document to validate as XHTML 1.1. This will cause a
// problem with some browsers, though, I'm sure. (Guess which!) So we will
// have to figure out what to do about this later.
- string const attr = "id=\"" + html::cleanAttr(to_utf8(getParam("name"))) + "\"";
- xs << html::CompTag("a", attr);
+ docstring const attr = "id=\"" + html::cleanAttr(getParam("name")) + '"';
+ xs << html::CompTag("a", to_utf8(attr));
return docstring();
}