commit fba3dace9ecd42408d6efbadc7123e3caf32083f
Author: Juergen Spitzmueller <[email protected]>
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
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs