X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Finsets%2FInsetIndex.cpp;h=a328d27de635c885b6d978e1fccf0ec81a763e16;hb=239b9919ffe28338d789e6dc9122228f77ab77a7;hp=fae26cad1d6f7a36af90868027c138df47dff010;hpb=84cca2dd944cf11f8c69532dff91e9d91c8b2ab3;p=lyx.git diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index fae26cad1d..a328d27de6 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -28,6 +28,7 @@ #include "output_latex.h" #include "output_xhtml.h" #include "sgml.h" +#include "texstream.h" #include "TextClass.h" #include "TocBackend.h" @@ -74,9 +75,10 @@ void InsetIndex::latex(otexstream & os, OutputParams const & runparams_in) const } // get contents of InsetText as LaTeX and plaintext - TexRow texrow; odocstringstream ourlatex; - otexstream ots(ourlatex, texrow); + // FIXME: do Tex/Row correspondence (I don't currently understand what is + // being generated from latexstr below) + otexstream ots(ourlatex); InsetText::latex(ots, runparams); odocstringstream ourplain; InsetText::plaintext(ourplain, runparams); @@ -348,7 +350,8 @@ void InsetIndex::string2params(string const & in, InsetIndexParams & params) } -void InsetIndex::addToToc(DocIterator const & cpit, bool output_active) const +void InsetIndex::addToToc(DocIterator const & cpit, bool output_active, + UpdateType utype) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); @@ -356,10 +359,13 @@ void InsetIndex::addToToc(DocIterator const & cpit, bool output_active) const string type = "index"; if (buffer().masterBuffer()->params().use_indices) type += ":" + to_utf8(params_.index); - text().forOutliner(str, 0); - buffer().tocBackend().toc(type).push_back(TocItem(pit, 0, str, output_active)); + // this is unlikely to be terribly long + text().forOutliner(str, INT_MAX); + TocBuilder & b = buffer().tocBackend().builder(type); + b.pushItem(pit, str, output_active); // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit, output_active); + InsetCollapsable::addToToc(cpit, output_active, utype); + b.pop(); } @@ -558,7 +564,7 @@ void InsetPrintIndex::latex(otexstream & os, OutputParams const & runparams_in) { if (!buffer().masterBuffer()->params().use_indices) { if (getParam("type") == from_ascii("idx")) - os << "\\printindex{}"; + os << "\\printindex" << termcmd; return; } OutputParams runparams = runparams_in; @@ -688,13 +694,13 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const if (bp.use_indices && getParam("type") != from_ascii("idx")) return docstring(); - Toc const & toc = buffer().tocBackend().toc("index"); - if (toc.empty()) + shared_ptr toc = buffer().tocBackend().toc("index"); + if (toc->empty()) return docstring(); // Collect the index entries in a form we can use them. - Toc::const_iterator it = toc.begin(); - Toc::const_iterator const en = toc.end(); + Toc::const_iterator it = toc->begin(); + Toc::const_iterator const en = toc->end(); vector entries; for (; it != en; ++it) if (it->isOutput())