commit fba3dace9ecd42408d6efbadc7123e3caf32083f Author: Juergen Spitzmueller <sp...@lyx.org> Date: Mon Oct 31 06:04:13 2022 +0100
Display subinsets in inset button and outliner --- src/insets/InsetIndex.cpp | 40 ++++++++++++++++++++++++++++++++-------- src/insets/InsetIndex.h | 3 ++- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index 25dfb46..5f4cb7e 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -687,7 +687,8 @@ void InsetIndex::getSubentries(otexstream & os, OutputParams const & runparams) } -std::vector<docstring> InsetIndex::getSubentriesAsText(OutputParams const & runparams) const +std::vector<docstring> InsetIndex::getSubentriesAsText(OutputParams const & runparams, + bool const asLabel) const { std::vector<docstring> subentries; @@ -703,10 +704,15 @@ std::vector<docstring> InsetIndex::getSubentriesAsText(OutputParams const & runp ++i; if (i > 2) break; - - otexstringstream os; - iim.getLatex(os, runparams); - subentries.emplace_back(os.str()); + if (asLabel) { + docstring const l; + docstring const sl = iim.getNewLabel(l); + subentries.emplace_back(sl); + } else { + otexstringstream os; + iim.getLatex(os, runparams); + subentries.emplace_back(os.str()); + } } } } @@ -926,8 +932,15 @@ docstring const InsetIndex::buttonLabel(BufferView const & bv) const docstring res; if (!il.contentaslabel() || geometry(bv) != ButtonOnly) res = label; - else + else { res = getNewLabel(label); + OutputParams const rp(0); + vector<docstring> sublbls = getSubentriesAsText(rp, true); + for (auto const & sublbl : sublbls) { + res += " " + docstring(1, char_type(0x2023));// TRIANGULAR BULLET + res += " " + sublbl; + } + } if (!insetindexpagerangetranslator_latex().find(params_.range).empty()) res += " " + from_ascii(insetindexpagerangetranslator_latex().find(params_.range)); return res; @@ -979,11 +992,22 @@ void InsetIndex::addToToc(DocIterator const & cpit, bool output_active, DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast<InsetIndex &>(*this))); docstring str; + InsetLayout const & il = getLayout(); + docstring label = translateIfPossible(il.labelstring()); + if (!il.contentaslabel()) + str = label; + else { + str = getNewLabel(label); + OutputParams const rp(0); + vector<docstring> sublbls = getSubentriesAsText(rp, true); + for (auto const & sublbl : sublbls) { + str += " " + docstring(1, char_type(0x2023));// TRIANGULAR BULLET + str += " " + sublbl; + } + } 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); TocBuilder & b = backend.builder(type); b.pushItem(pit, str, output_active); // Proceed with the rest of the inset. diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h index 5ecf6be..1aaf2d7 100644 --- a/src/insets/InsetIndex.h +++ b/src/insets/InsetIndex.h @@ -104,7 +104,8 @@ private: /// void getSubentries(otexstream &, OutputParams const &) const; /// - std::vector<docstring> getSubentriesAsText(OutputParams const &) const; + std::vector<docstring> getSubentriesAsText(OutputParams const &, + bool const asLabel = false) const; /// docstring getMainSubentryAsText(OutputParams const & runparams) const; /// -- lyx-cvs mailing list lyx-cvs@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-cvs