X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetIndex.cpp;h=d485a11969db24232f9d78b35de7550c0075592e;hb=babe9eaeabd44faf4ecf98285799f2a8670c8f6c;hp=de46f9b776210294368dca5d43bf14d05f3c7361;hpb=1c0100d3b18f357122d80d003cdcf38516a5d6f5;p=features.git diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index de46f9b776..d485a11969 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -200,13 +200,13 @@ void InsetIndex::doDispatch(Cursor & cur, FuncRequest & cmd) case LFUN_INSET_MODIFY: { if (cmd.getArg(0) == "changetype") { - cur.recordUndoInset(ATOMIC_UNDO, this); + cur.recordUndoInset(this); params_.index = from_utf8(cmd.getArg(1)); break; } InsetIndexParams params; InsetIndex::string2params(to_utf8(cmd.argument()), params); - cur.recordUndoInset(ATOMIC_UNDO, this); + cur.recordUndoInset(this); params_.index = params.index; // what we really want here is a TOC update, but that means // a full buffer update @@ -353,8 +353,12 @@ void InsetIndex::addToToc(DocIterator const & cpit, bool output_active) const DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); docstring str; - text().forToc(str, 0); - buffer().tocBackend().toc("index").push_back(TocItem(pit, 0, str, output_active)); + string type = "index"; + if (buffer().masterBuffer()->params().use_indices) + type += ":" + to_utf8(params_.index); + // this is unlikely to be terribly long + text().forOutliner(str, INT_MAX); + buffer().tocBackend().toc(type).push_back(TocItem(pit, 0, str, output_active)); // Proceed with the rest of the inset. InsetCollapsable::addToToc(cpit, output_active); } @@ -427,7 +431,7 @@ ParamInfo const & InsetPrintIndex::findInfo(string const & /* cmdName */) static ParamInfo param_info_; if (param_info_.empty()) { param_info_.add("type", ParamInfo::LATEX_OPTIONAL, - ParamInfo::HANDLING_ESCAPE); + ParamInfo::HANDLING_ESCAPE); param_info_.add("name", ParamInfo::LATEX_REQUIRED); } return param_info_; @@ -689,12 +693,19 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const if (toc.empty()) return docstring(); - // Collection the index entries in a form we can use them. + // Collect the index entries in a form we can use them. Toc::const_iterator it = toc.begin(); Toc::const_iterator const en = toc.end(); vector entries; for (; it != en; ++it) - entries.push_back(IndexEntry(it->str(), it->dit())); + if (it->isOutput()) + entries.push_back(IndexEntry(it->str(), it->dit())); + + if (entries.empty()) + // not very likely that all the index entries are in notes or + // whatever, but.... + return docstring(); + stable_sort(entries.begin(), entries.end()); Layout const & lay = bp.documentClass().htmlTOCLayout();