X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTocBackend.cpp;h=43a2188c713c15234b6b5d302c9f75c694cb16cd;hb=7441172d4d9a26eb4824bb8bee003f457ef34f1c;hp=c013cca03f7e2f71caa8194d868cc7dfb2dcfa2c;hpb=3391fed36a574fb729f243888258d1b6d45b0251;p=lyx.git diff --git a/src/TocBackend.cpp b/src/TocBackend.cpp index c013cca03f..43a2188c71 100644 --- a/src/TocBackend.cpp +++ b/src/TocBackend.cpp @@ -22,7 +22,7 @@ #include "Paragraph.h" #include "TextClass.h" -#include "insets/InsetText.h" +#include "insets/InsetArgument.h" #include "support/debug.h" #include "support/docstream.h" @@ -43,7 +43,7 @@ namespace lyx { /////////////////////////////////////////////////////////////////////////// TocItem::TocItem(DocIterator const & dit, int d, docstring const & s, - bool output_active, FuncRequest action) + bool output_active, FuncRequest const & action) : dit_(dit), depth_(d), str_(s), output_(output_active), action_(action) { @@ -162,7 +162,7 @@ bool TocBackend::updateItem(DocIterator const & dit_in) return false; if (toc("tableofcontents")->empty()) { - // FIXME: should not happen, + // FIXME: should not happen, // a call to TocBackend::update() is missing somewhere LYXERR0("TocBackend::updateItem called but the TOC is empty!"); return false; @@ -181,18 +181,14 @@ bool TocBackend::updateItem(DocIterator const & dit_in) // FIXME: This is supposed to accomplish the same as the body of // InsetText::iterateForToc(), probably Paragraph & par = toc_item->dit().paragraph(); - InsetList::const_iterator it = par.insetList().begin(); - InsetList::const_iterator end = par.insetList().end(); - for (; it != end; ++it) { - Inset & inset = *it->inset; - if (inset.lyxCode() == ARG_CODE) { + for (auto const & table : par.insetList()) + if (InsetArgument const * arg = table.inset->asInsetArgument()) { tocstring = par.labelString(); if (!tocstring.empty()) tocstring += ' '; - inset.asInsetText()->text().forOutliner(tocstring,TOC_ENTRY_LENGTH); + arg->text().forOutliner(tocstring,TOC_ENTRY_LENGTH); break; } - } int const toclevel = toc_item->dit().text()-> getTocLevel(toc_item->dit().pit()); @@ -208,17 +204,24 @@ bool TocBackend::updateItem(DocIterator const & dit_in) } -void TocBackend::update(bool output_active, UpdateType utype) +void TocBackend::reset() { - for (TocList::iterator it = tocs_.begin(); it != tocs_.end(); ++it) - it->second->clear(); + for (auto const & t: tocs_) + t.second->clear(); tocs_.clear(); builders_.clear(); resetOutlinerNames(); - if (!buffer_->isInternal()) { - DocIterator dit; - buffer_->inset().addToToc(dit, output_active, utype, *this); - } +} + + +void TocBackend::update(bool output_active, UpdateType utype) +{ + reset(); + if (buffer_->isInternal()) + return; + + DocIterator dit; + buffer_->inset().addToToc(dit, output_active, utype, *this); } @@ -276,7 +279,7 @@ void TocBackend::resetOutlinerNames() { outliner_names_.clear(); // names from this document class - for (pair const & name + for (auto const & name : buffer_->params().documentClass().outlinerNames()) addName(name.first, translateIfPossible(name.second)); // Hardcoded types @@ -285,6 +288,7 @@ void TocBackend::resetOutlinerNames() addName("senseless", _("Senseless")); addName("citation", _("Citations")); addName("label", _("Labels and References")); + addName("brokenrefs", _("Broken References and Citations")); // Customizable, but the corresponding insets have no layout definition addName("child", _("Child Documents")); addName("graphics", _("Graphics"));