X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetLabel.cpp;h=35d5f543b8f86e4a0d32fa3799b3192c0ecd48e2;hb=a25569ebb3e739779ff458b287e403c3bf79777a;hp=e52540e89d4eda62fba0400ce35b48a6db48aa90;hpb=86cccf10771cb00c71fac2becf39dd7e9a301d45;p=lyx.git diff --git a/src/insets/InsetLabel.cpp b/src/insets/InsetLabel.cpp index e52540e89d..35d5f543b8 100644 --- a/src/insets/InsetLabel.cpp +++ b/src/insets/InsetLabel.cpp @@ -109,9 +109,9 @@ void InsetLabel::updateLabelAndRefs(docstring const & new_label, void InsetLabel::updateReferences(docstring const & old_label, docstring const & new_label) { - Buffer::References & refs = buffer().references(old_label); - Buffer::References::iterator it = refs.begin(); - Buffer::References::iterator end = refs.end(); + Buffer::References const & refs = buffer().references(old_label); + Buffer::References::const_iterator it = refs.begin(); + Buffer::References::const_iterator end = refs.end(); for (; it != end; ++it) { buffer().undo().recordUndo(CursorData(it->second)); if (it->first->lyxCode() == MATH_REF_CODE) { @@ -169,15 +169,15 @@ void InsetLabel::updateBuffer(ParIterator const & par, UpdateType utype) } -void InsetLabel::addToToc(DocIterator const & cpit) const +void InsetLabel::addToToc(DocIterator const & cpit, bool output_active) const { docstring const & label = getParam("name"); Toc & toc = buffer().tocBackend().toc("label"); if (buffer().insetLabel(label) != this) { - toc.push_back(TocItem(cpit, 0, screen_label_)); + toc.push_back(TocItem(cpit, 0, screen_label_, output_active)); return; } - toc.push_back(TocItem(cpit, 0, screen_label_)); + 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(); @@ -185,10 +185,12 @@ void InsetLabel::addToToc(DocIterator const & cpit) const 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())); + it->first->asInsetMath()->asRefInset()->screenLabel(), + output_active)); else toc.push_back(TocItem(ref_pit, 1, - static_cast(it->first)->screenLabel())); + static_cast(it->first)->getTOCString(), + output_active)); } } @@ -198,10 +200,17 @@ bool InsetLabel::getStatus(Cursor & cur, FuncRequest const & cmd, { bool enabled; switch (cmd.action()) { - case LFUN_LABEL_INSERT_AS_REF: - case LFUN_LABEL_COPY_AS_REF: + case LFUN_LABEL_INSERT_AS_REFERENCE: + 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); } @@ -216,6 +225,12 @@ void InsetLabel::doDispatch(Cursor & cur, FuncRequest & cmd) 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; + } InsetCommandParams p(LABEL_CODE); // FIXME UNICODE InsetCommand::string2params(to_utf8(cmd.argument()), p); @@ -231,7 +246,7 @@ void InsetLabel::doDispatch(Cursor & cur, FuncRequest & cmd) break; } - case LFUN_LABEL_COPY_AS_REF: { + case LFUN_LABEL_COPY_AS_REFERENCE: { InsetCommandParams p(REF_CODE, "ref"); p["reference"] = getParam("name"); cap::clearSelection(); @@ -239,7 +254,7 @@ void InsetLabel::doDispatch(Cursor & cur, FuncRequest & cmd) break; } - case LFUN_LABEL_INSERT_AS_REF: { + case LFUN_LABEL_INSERT_AS_REFERENCE: { InsetCommandParams p(REF_CODE, "ref"); p["reference"] = getParam("name"); string const data = InsetCommand::params2string(p); @@ -254,7 +269,8 @@ void InsetLabel::doDispatch(Cursor & cur, FuncRequest & cmd) } -int InsetLabel::plaintext(odocstream & os, OutputParams const &) const +int InsetLabel::plaintext(odocstringstream & os, + OutputParams const &, size_t) const { docstring const str = getParam("name"); os << '<' << str << '>';