X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetTOC.cpp;h=29b7540cc277cbb2c690e5f15a2a2e50e4b49b12;hb=cc3e227cba3571bb8c383cd41348b932e3104df3;hp=d413892a05836e3890dfb2a86035f449e9fd2dea;hpb=fb4c70650c03d55f8cfb2ea8d312382c86b863f6;p=lyx.git diff --git a/src/insets/InsetTOC.cpp b/src/insets/InsetTOC.cpp index d413892a05..29b7540cc2 100644 --- a/src/insets/InsetTOC.cpp +++ b/src/insets/InsetTOC.cpp @@ -45,7 +45,7 @@ string cmd2type(string const & cmd) return "listing"; return cmd; } -} +} // namespace InsetTOC::InsetTOC(Buffer * buf, InsetCommandParams const & p) @@ -87,7 +87,7 @@ void InsetTOC::doDispatch(Cursor & cur, FuncRequest & cmd) { cur.dispatched(); } break; - + default: InsetCommand::doDispatch(cur, cmd); } @@ -96,8 +96,12 @@ void InsetTOC::doDispatch(Cursor & cur, FuncRequest & cmd) { docstring InsetTOC::layoutName() const { - if (getCmdName() == "lstlistoflistings") - return from_ascii("TOC:Listings"); + if (getCmdName() == "lstlistoflistings") { + if (buffer().params().use_minted) + return from_ascii("TOC:MintedListings"); + else + return from_ascii("TOC:Listings"); + } return from_ascii("TOC"); } @@ -106,8 +110,12 @@ void InsetTOC::validate(LaTeXFeatures & features) const { InsetCommand::validate(features); features.useInsetLayout(getLayout()); - if (getCmdName() == "lstlistoflistings") - features.require("listings"); + if (getCmdName() == "lstlistoflistings") { + if (buffer().params().use_minted) + features.require("minted"); + else + features.require("listings"); + } } @@ -128,7 +136,7 @@ int InsetTOC::docbook(odocstream & os, OutputParams const &) const } -void InsetTOC::makeTOCEntry(XHTMLStream & xs, +void InsetTOC::makeTOCEntry(XHTMLStream & xs, Paragraph const & par, OutputParams const & op) const { string const attr = "href='#" + par.magicLabel() + "' class='tocentry'"; @@ -148,7 +156,7 @@ void InsetTOC::makeTOCEntry(XHTMLStream & xs, } -void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, +void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, Toc const & toc, OutputParams const & op) const { Toc::const_iterator it = toc.begin(); @@ -163,11 +171,11 @@ void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, // First, we need to manage increases and decreases of depth // If there's no depth to deal with, we artifically set it to 1. int const depth = it->depth(); - + // Ignore stuff above the tocdepth if (depth > buffer().params().tocdepth) continue; - + if (depth > lastdepth) { xs << html::CR(); // open as many tags as we need to open to get to this level @@ -182,7 +190,7 @@ void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, else if (depth < lastdepth) { // close as many as we have to close to get back to this level // this includes closing the last tag at this level - for (int i = lastdepth; i >= depth; --i) + for (int i = lastdepth; i >= depth; --i) xs << html::EndTag("div") << html::CR(); // now open our tag stringstream attr; @@ -196,17 +204,17 @@ void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, attr << "class='lyxtoc-" << depth << "'"; xs << html::StartTag("div", attr.str()) << html::CR(); } - + // Now output TOC info for this entry Paragraph const & par = it->dit().innerParagraph(); makeTOCEntry(xs, par, op); } - for (int i = lastdepth; i > 0; --i) + for (int i = lastdepth; i > 0; --i) xs << html::EndTag("div") << html::CR(); } -void InsetTOC::makeTOCNoDepth(XHTMLStream & xs, +void InsetTOC::makeTOCNoDepth(XHTMLStream & xs, Toc const & toc, const OutputParams & op) const { Toc::const_iterator it = toc.begin(); @@ -221,7 +229,7 @@ void InsetTOC::makeTOCNoDepth(XHTMLStream & xs, Paragraph const & par = it->dit().innerParagraph(); makeTOCEntry(xs, par, op); - + xs << html::EndTag("div"); } } @@ -235,8 +243,9 @@ docstring InsetTOC::xhtml(XHTMLStream &, OutputParams const & op) const LASSERT(false, return docstring()); } - Toc const & toc = buffer().masterBuffer()->tocBackend().toc(cmd2type(command)); - if (toc.empty()) + shared_ptr toc = + buffer().masterBuffer()->tocBackend().toc(cmd2type(command)); + if (toc->empty()) return docstring(); // we'll use our own stream, because we are going to defer everything. @@ -264,9 +273,9 @@ docstring InsetTOC::xhtml(XHTMLStream &, OutputParams const & op) const // Output of TOC if (use_depth) - makeTOCWithDepth(xs, toc, op); + makeTOCWithDepth(xs, *toc, op); else - makeTOCNoDepth(xs, toc, op); + makeTOCNoDepth(xs, *toc, op); xs << html::EndTag("div") << html::CR(); return ods.str();