]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetCollapsable.cpp
Make the generation of children's tocs more robust
[features.git] / src / insets / InsetCollapsable.cpp
index bcf96cc06999f222bd2e8a7fc971ee3e61e2706d..beb9f6d4f151c6cc6a7151a151bdb503761682b3 100644 (file)
@@ -24,6 +24,7 @@
 #include "Lexer.h"
 #include "MetricsInfo.h"
 #include "OutputParams.h"
+#include "TocBackend.h"
 
 #include "frontends/FontMetrics.h"
 #include "frontends/Painter.h"
@@ -660,4 +661,30 @@ bool InsetCollapsable::canPaintChange(BufferView const & bv) const
 }
 
 
+void InsetCollapsable::addToToc(DocIterator const & cpit, bool output_active,
+                                UpdateType utype, TocBackend & backend) const
+{
+       bool doing_output = output_active && producesOutput();
+       InsetLayout const & layout = getLayout();
+       if (layout.addToToc()) {
+               TocBuilder & b = backend.builder(layout.tocType());
+               // Cursor inside the inset
+               DocIterator pit = cpit;
+               pit.push_back(CursorSlice(const_cast<InsetCollapsable &>(*this)));
+               docstring const label = getLabel();
+               b.pushItem(pit, label + (label.empty() ? "" : ": "), output_active);
+               // Proceed with the rest of the inset.
+               InsetText::addToToc(cpit, doing_output, utype, backend);
+               if (layout.isTocCaption()) {
+                       docstring str;
+                       text().forOutliner(str, TOC_ENTRY_LENGTH);
+                       b.argumentItem(str);
+               }
+               b.pop();
+       } else
+               InsetText::addToToc(cpit, doing_output, utype, backend);
+}
+
+
+
 } // namespace lyx