From 86994bf75320524ec656fd70950633c83d445a6c Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Fri, 8 Mar 2013 16:18:26 -0500 Subject: [PATCH] Add a member to TocItem that tells us whether the item in question is included in output. --- src/Buffer.cpp | 2 +- src/Changes.cpp | 12 ++++++------ src/Changes.h | 3 ++- src/Paragraph.cpp | 4 ++-- src/Paragraph.h | 3 ++- src/TocBackend.cpp | 7 ++++--- src/TocBackend.h | 10 ++++++---- src/insets/Inset.h | 2 +- src/insets/InsetBranch.cpp | 7 ++++--- src/insets/InsetBranch.h | 2 +- src/insets/InsetCaption.cpp | 6 +++--- src/insets/InsetCaption.h | 2 +- src/insets/InsetCitation.cpp | 4 ++-- src/insets/InsetCitation.h | 2 +- src/insets/InsetFoot.cpp | 6 +++--- src/insets/InsetFoot.h | 2 +- src/insets/InsetGraphics.cpp | 4 ++-- src/insets/InsetGraphics.h | 2 +- src/insets/InsetInclude.cpp | 10 +++++----- src/insets/InsetInclude.h | 2 +- src/insets/InsetIndex.cpp | 6 +++--- src/insets/InsetIndex.h | 2 +- src/insets/InsetLabel.cpp | 12 +++++++----- src/insets/InsetLabel.h | 2 +- src/insets/InsetMarginal.cpp | 6 +++--- src/insets/InsetMarginal.h | 2 +- src/insets/InsetNote.cpp | 10 ++++++---- src/insets/InsetNote.h | 2 +- src/insets/InsetRef.cpp | 4 ++-- src/insets/InsetRef.h | 2 +- src/insets/InsetTabular.cpp | 4 ++-- src/insets/InsetTabular.h | 2 +- src/insets/InsetText.cpp | 11 +++++++---- src/insets/InsetText.h | 2 +- src/mathed/InsetMathHull.cpp | 6 +++--- src/mathed/InsetMathHull.h | 2 +- 36 files changed, 90 insertions(+), 77 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 2379f49b4a..b646cf6619 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -4256,7 +4256,7 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const d->bibinfo_cache_valid_ = true; d->cite_labels_valid_ = true; - cbuf.tocBackend().update(); + cbuf.tocBackend().update(true); if (scope == UpdateMaster) cbuf.structureChanged(); } diff --git a/src/Changes.cpp b/src/Changes.cpp index 29095f9b79..d24df403cc 100644 --- a/src/Changes.cpp +++ b/src/Changes.cpp @@ -459,7 +459,8 @@ void Changes::checkAuthors(AuthorList const & authorList) } -void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer) const +void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer, + bool output_active) const { if (table_.empty()) return; @@ -481,8 +482,7 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer) const break; case Change::INSERTED: // 0x270d is the hand writting symbol in the Dingbats unicode group. - str.push_back(0x270d); - break; + str.push_back(0x270d); break; } dit.pos() = it->range.start; Paragraph const & par = dit.paragraph(); @@ -493,8 +493,8 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer) const docstring const & author = author_list.get(it->change.author).name(); Toc::iterator it = change_list.item(0, author); if (it == change_list.end()) { - change_list.push_back(TocItem(dit, 0, author)); - change_list.push_back(TocItem(dit, 1, str, + change_list.push_back(TocItem(dit, 0, author, output_active)); + change_list.push_back(TocItem(dit, 1, str, output_active, support::wrapParas(str, 4))); continue; } @@ -502,7 +502,7 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer) const if (it->depth() == 0 && it->str() != author) break; } - change_list.insert(it, TocItem(dit, 1, str, + change_list.insert(it, TocItem(dit, 1, str, output_active, support::wrapParas(str, 4))); } } diff --git a/src/Changes.h b/src/Changes.h index 84c4fea707..9219edc653 100644 --- a/src/Changes.h +++ b/src/Changes.h @@ -115,7 +115,8 @@ public: void checkAuthors(AuthorList const & authorList); /// - void addToToc(DocIterator const & cdit, Buffer const & buffer) const; + void addToToc(DocIterator const & cdit, Buffer const & buffer, + bool output_active) const; private: class Range { diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index f039a71ed2..3ed382a23e 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -585,9 +585,9 @@ Paragraph::Private::Private(Private const & p, Paragraph * owner, void Paragraph::addChangesToToc(DocIterator const & cdit, - Buffer const & buf) const + Buffer const & buf, bool output_active) const { - d->changes_.addToToc(cdit, buf); + d->changes_.addToToc(cdit, buf, output_active); } diff --git a/src/Paragraph.h b/src/Paragraph.h index 0ea959fd54..dc461790ee 100644 --- a/src/Paragraph.h +++ b/src/Paragraph.h @@ -154,7 +154,8 @@ public: void setId(int id); /// - void addChangesToToc(DocIterator const & cdit, Buffer const & buf) const; + void addChangesToToc(DocIterator const & cdit, Buffer const & buf, + bool output_active) const; /// Language const * getParLanguage(BufferParams const &) const; /// diff --git a/src/TocBackend.cpp b/src/TocBackend.cpp index 0b9f6b60e8..c8bf4adf48 100644 --- a/src/TocBackend.cpp +++ b/src/TocBackend.cpp @@ -45,7 +45,8 @@ namespace lyx { /////////////////////////////////////////////////////////////////////////// TocItem::TocItem(DocIterator const & dit, int d, docstring const & s, - docstring const & t) : dit_(dit), depth_(d), str_(s), tooltip_(t) + bool output_active, docstring const & t) : + dit_(dit), depth_(d), str_(s), tooltip_(t), output_(output_active) { } @@ -166,12 +167,12 @@ bool TocBackend::updateItem(DocIterator const & dit) } -void TocBackend::update() +void TocBackend::update(bool output_active) { tocs_.clear(); if (!buffer_->isInternal()) { DocIterator dit; - buffer_->inset().addToToc(dit); + buffer_->inset().addToToc(dit, output_active); } } diff --git a/src/TocBackend.h b/src/TocBackend.h index f3bd1e8823..bc7a414745 100644 --- a/src/TocBackend.h +++ b/src/TocBackend.h @@ -43,6 +43,7 @@ public: TocItem(DocIterator const & dit, int depth, docstring const & s, + bool output_active, docstring const & t = docstring() ); /// @@ -59,6 +60,8 @@ public: docstring const asString() const; /// DocIterator const & dit() const; + /// + bool isOutput() const { return output_; } /// the action corresponding to the goTo above FuncRequest action() const; @@ -66,15 +69,14 @@ public: protected: /// Current position of item. DocIterator dit_; - /// nesting depth int depth_; - /// Full item string docstring str_; - /// The tooltip string docstring tooltip_; + /// Is this item in a note, inactive branch, etc? + bool output_; }; @@ -109,7 +111,7 @@ public: /// void setBuffer(Buffer const * buffer) { buffer_ = buffer; } /// - void update(); + void update(bool output_active); /// \return true if the item was updated. bool updateItem(DocIterator const & pit); diff --git a/src/insets/Inset.h b/src/insets/Inset.h index a79ce38ac2..36a0f929d8 100644 --- a/src/insets/Inset.h +++ b/src/insets/Inset.h @@ -496,7 +496,7 @@ public: /// Add an entry to the TocList /// Pass a DocIterator that points at the paragraph containing /// the inset - virtual void addToToc(DocIterator const &) const {} + virtual void addToToc(DocIterator const & /* di */, bool /* output_active */) const {} /// Collect BibTeX information virtual void collectBibKeys(InsetIterator const &) const {} /// Update the counters of this inset and of its contents. diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp index 11774a390b..2676d93338 100644 --- a/src/insets/InsetBranch.cpp +++ b/src/insets/InsetBranch.cpp @@ -348,7 +348,7 @@ void InsetBranch::string2params(string const & in, InsetBranchParams & params) } -void InsetBranch::addToToc(DocIterator const & cpit) const +void InsetBranch::addToToc(DocIterator const & cpit, bool output_active) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); @@ -356,9 +356,10 @@ void InsetBranch::addToToc(DocIterator const & cpit) const Toc & toc = buffer().tocBackend().toc("branch"); docstring str = params_.branch + ": "; text().forToc(str, TOC_ENTRY_LENGTH); - toc.push_back(TocItem(pit, 0, str, toolTipText(docstring(), 3, 60))); + toc.push_back(TocItem(pit, 0, str, output_active, toolTipText(docstring(), 3, 60))); // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit); + bool const doing_output = output_active && isBranchSelected(); + InsetCollapsable::addToToc(cpit, doing_output); } diff --git a/src/insets/InsetBranch.h b/src/insets/InsetBranch.h index f64f616b40..7521fbe0c2 100644 --- a/src/insets/InsetBranch.h +++ b/src/insets/InsetBranch.h @@ -82,7 +82,7 @@ private: /// std::string contextMenuName() const; /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// InsetBranchParams const & params() const { return params_; } /// diff --git a/src/insets/InsetCaption.cpp b/src/insets/InsetCaption.cpp index 764e940a13..6891d6387e 100644 --- a/src/insets/InsetCaption.cpp +++ b/src/insets/InsetCaption.cpp @@ -97,7 +97,7 @@ void InsetCaption::setCustomLabel(docstring const & label) } -void InsetCaption::addToToc(DocIterator const & cpit) const +void InsetCaption::addToToc(DocIterator const & cpit, bool output_active) const { if (floattype_.empty()) return; @@ -108,10 +108,10 @@ void InsetCaption::addToToc(DocIterator const & cpit) const Toc & toc = buffer().tocBackend().toc(floattype_); docstring str = full_label_; text().forToc(str, TOC_ENTRY_LENGTH); - toc.push_back(TocItem(pit, 0, str)); + toc.push_back(TocItem(pit, 0, str, output_active)); // Proceed with the rest of the inset. - InsetText::addToToc(cpit); + InsetText::addToToc(cpit, output_active); } diff --git a/src/insets/InsetCaption.h b/src/insets/InsetCaption.h index 58822435cd..37566ca678 100644 --- a/src/insets/InsetCaption.h +++ b/src/insets/InsetCaption.h @@ -80,7 +80,7 @@ private: /// void setCustomLabel(docstring const & label); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// virtual bool forcePlainLayout(idx_type = 0) const { return true; } /// Captions don't accept alignment, spacing, etc. diff --git a/src/insets/InsetCitation.cpp b/src/insets/InsetCitation.cpp index 743bda69cb..b21ae6ae39 100644 --- a/src/insets/InsetCitation.cpp +++ b/src/insets/InsetCitation.cpp @@ -330,7 +330,7 @@ void InsetCitation::updateBuffer(ParIterator const &, UpdateType) } -void InsetCitation::addToToc(DocIterator const & cpit) const +void InsetCitation::addToToc(DocIterator const & cpit, bool output_active) const { // NOTE // XHTML output uses the TOC to collect the citations @@ -338,7 +338,7 @@ void InsetCitation::addToToc(DocIterator const & cpit) const // will need to change how the citations are collected. docstring const tocitem = getParam("key"); Toc & toc = buffer().tocBackend().toc("citation"); - toc.push_back(TocItem(cpit, 0, tocitem)); + toc.push_back(TocItem(cpit, 0, tocitem, output_active)); } diff --git a/src/insets/InsetCitation.h b/src/insets/InsetCitation.h index 0bd048ebfb..53f42da8cc 100644 --- a/src/insets/InsetCitation.h +++ b/src/insets/InsetCitation.h @@ -67,7 +67,7 @@ public: /// void updateBuffer(ParIterator const & it, UpdateType); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// std::string contextMenuName() const; //@} diff --git a/src/insets/InsetFoot.cpp b/src/insets/InsetFoot.cpp index a7139f9213..e48d67cb08 100644 --- a/src/insets/InsetFoot.cpp +++ b/src/insets/InsetFoot.cpp @@ -61,7 +61,7 @@ void InsetFoot::updateBuffer(ParIterator const & it, UpdateType utype) } -void InsetFoot::addToToc(DocIterator const & cpit) const +void InsetFoot::addToToc(DocIterator const & cpit, bool output_active) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); @@ -69,9 +69,9 @@ void InsetFoot::addToToc(DocIterator const & cpit) const Toc & toc = buffer().tocBackend().toc("footnote"); docstring str = custom_label_ + ": "; text().forToc(str, TOC_ENTRY_LENGTH); - toc.push_back(TocItem(pit, 0, str, toolTipText(docstring(), 3, 60))); + toc.push_back(TocItem(pit, 0, str, output_active, toolTipText(docstring(), 3, 60))); // Proceed with the rest of the inset. - InsetFootlike::addToToc(cpit); + InsetFootlike::addToToc(cpit, output_active); } diff --git a/src/insets/InsetFoot.h b/src/insets/InsetFoot.h index 6106fcd352..f308b142e6 100644 --- a/src/insets/InsetFoot.h +++ b/src/insets/InsetFoot.h @@ -41,7 +41,7 @@ private: /// Update the counters of this inset and of its contents void updateBuffer(ParIterator const &, UpdateType); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// docstring toolTip(BufferView const & bv, int x, int y) const; /// diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp index eec663e30b..2aec82fbf5 100644 --- a/src/insets/InsetGraphics.cpp +++ b/src/insets/InsetGraphics.cpp @@ -1047,13 +1047,13 @@ void InsetGraphics::editGraphics(InsetGraphicsParams const & p) const } -void InsetGraphics::addToToc(DocIterator const & cpit) const +void InsetGraphics::addToToc(DocIterator const & cpit, bool output_active) const { TocBackend & backend = buffer().tocBackend(); //FIXME UNICODE docstring const str = from_utf8(params_.filename.onlyFileName()); - backend.toc("graphics").push_back(TocItem(cpit, 0, str)); + backend.toc("graphics").push_back(TocItem(cpit, 0, str, output_active)); } diff --git a/src/insets/InsetGraphics.h b/src/insets/InsetGraphics.h index d8ad8f8c71..a6e6ce3381 100644 --- a/src/insets/InsetGraphics.h +++ b/src/insets/InsetGraphics.h @@ -97,7 +97,7 @@ private: /// bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// std::string contextMenuName() const; /// Force inset into LTR environment if surroundings are RTL diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index 2bf3ae722f..70050fd5bc 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -1090,13 +1090,13 @@ void InsetInclude::addPreview(DocIterator const & /*inset_pos*/, } -void InsetInclude::addToToc(DocIterator const & cpit) const +void InsetInclude::addToToc(DocIterator const & cpit, bool output_active) const { TocBackend & backend = buffer().tocBackend(); if (isListings(params())) { if (label_) - label_->addToToc(cpit); + label_->addToToc(cpit, output_active); InsetListingsParams p(to_utf8(params()["lstparams"])); string caption = p.getParamValue("caption"); @@ -1106,7 +1106,7 @@ void InsetInclude::addToToc(DocIterator const & cpit) const docstring str = convert(toc.size() + 1) + ". " + from_utf8(caption); DocIterator pit = cpit; - toc.push_back(TocItem(pit, 0, str)); + toc.push_back(TocItem(pit, 0, str, output_active)); return; } Buffer const * const childbuffer = getChildBuffer(); @@ -1115,10 +1115,10 @@ void InsetInclude::addToToc(DocIterator const & cpit) const Toc & toc = backend.toc("child"); docstring str = childbuffer->fileName().displayName(); - toc.push_back(TocItem(cpit, 0, str)); + toc.push_back(TocItem(cpit, 0, str, output_active)); TocList & toclist = backend.tocs(); - childbuffer->tocBackend().update(); + childbuffer->tocBackend().update(output_active); TocList const & childtoclist = childbuffer->tocBackend().tocs(); TocList::const_iterator it = childtoclist.begin(); TocList::const_iterator const end = childtoclist.end(); diff --git a/src/insets/InsetInclude.h b/src/insets/InsetInclude.h index cbc2db02e7..3e28346269 100644 --- a/src/insets/InsetInclude.h +++ b/src/insets/InsetInclude.h @@ -102,7 +102,7 @@ public: /// void addPreview(DocIterator const &, graphics::PreviewLoader &) const; /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// void updateBuffer(ParIterator const &, UpdateType); /// diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index c754ac0e67..0d2230d5bd 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -347,15 +347,15 @@ void InsetIndex::string2params(string const & in, InsetIndexParams & params) } -void InsetIndex::addToToc(DocIterator const & cpit) const +void InsetIndex::addToToc(DocIterator const & cpit, bool output_active) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); docstring str; text().forToc(str, 0); - buffer().tocBackend().toc("index").push_back(TocItem(pit, 0, str)); + buffer().tocBackend().toc("index").push_back(TocItem(pit, 0, str, output_active)); // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit); + InsetCollapsable::addToToc(cpit, output_active); } diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h index 42d67615b9..a980a42781 100644 --- a/src/insets/InsetIndex.h +++ b/src/insets/InsetIndex.h @@ -71,7 +71,7 @@ private: /// should paragraph indendation be omitted in any case? bool neverIndent() const { return true; } /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// docstring toolTip(BufferView const & bv, int x, int y) const; /// diff --git a/src/insets/InsetLabel.cpp b/src/insets/InsetLabel.cpp index 557548d84d..c2ef896b86 100644 --- a/src/insets/InsetLabel.cpp +++ b/src/insets/InsetLabel.cpp @@ -169,15 +169,15 @@ void InsetLabel::updateBuffer(ParIterator const & par, UpdateType utype) } -void InsetLabel::addToToc(DocIterator const & cpit) const +void InsetLabel::addToToc(DocIterator const & cpit, bool output_active) const { docstring const & label = getParam("name"); Toc & toc = buffer().tocBackend().toc("label"); if (buffer().insetLabel(label) != this) { - toc.push_back(TocItem(cpit, 0, screen_label_)); + toc.push_back(TocItem(cpit, 0, screen_label_, output_active)); return; } - toc.push_back(TocItem(cpit, 0, screen_label_)); + toc.push_back(TocItem(cpit, 0, screen_label_, output_active)); Buffer::References const & refs = buffer().references(label); Buffer::References::const_iterator it = refs.begin(); Buffer::References::const_iterator end = refs.end(); @@ -185,10 +185,12 @@ void InsetLabel::addToToc(DocIterator const & cpit) const DocIterator const ref_pit(it->second); if (it->first->lyxCode() == MATH_REF_CODE) toc.push_back(TocItem(ref_pit, 1, - it->first->asInsetMath()->asRefInset()->screenLabel())); + it->first->asInsetMath()->asRefInset()->screenLabel(), + output_active)); else toc.push_back(TocItem(ref_pit, 1, - static_cast(it->first)->screenLabel())); + static_cast(it->first)->screenLabel(), + output_active)); } } diff --git a/src/insets/InsetLabel.h b/src/insets/InsetLabel.h index c28ef1c0b5..3c9bbd05f6 100644 --- a/src/insets/InsetLabel.h +++ b/src/insets/InsetLabel.h @@ -57,7 +57,7 @@ public: /// void updateBuffer(ParIterator const & it, UpdateType); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; //@} /// \name Static public methods obligated for InsetCommand derived classes diff --git a/src/insets/InsetMarginal.cpp b/src/insets/InsetMarginal.cpp index d7ec180de5..9543e8f527 100644 --- a/src/insets/InsetMarginal.cpp +++ b/src/insets/InsetMarginal.cpp @@ -51,7 +51,7 @@ int InsetMarginal::docbook(odocstream & os, } -void InsetMarginal::addToToc(DocIterator const & cpit) const +void InsetMarginal::addToToc(DocIterator const & cpit, bool output_active) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); @@ -59,9 +59,9 @@ void InsetMarginal::addToToc(DocIterator const & cpit) const Toc & toc = buffer().tocBackend().toc("marginalnote"); docstring str; text().forToc(str, TOC_ENTRY_LENGTH); - toc.push_back(TocItem(pit, 0, str, toolTipText(docstring(), 3, 60))); + toc.push_back(TocItem(pit, 0, str, output_active, toolTipText(docstring(), 3, 60))); // Proceed with the rest of the inset. - InsetFootlike::addToToc(cpit); + InsetFootlike::addToToc(cpit, output_active); } } // namespace lyx diff --git a/src/insets/InsetMarginal.h b/src/insets/InsetMarginal.h index 8f7c89a52a..38e1a9c50a 100644 --- a/src/insets/InsetMarginal.h +++ b/src/insets/InsetMarginal.h @@ -36,7 +36,7 @@ public: /// int docbook(odocstream &, OutputParams const & runparams) const; /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; private: /// Inset * clone() const { return new InsetMarginal(*this); } diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp index ea1299720d..19f6035e07 100644 --- a/src/insets/InsetNote.cpp +++ b/src/insets/InsetNote.cpp @@ -195,18 +195,20 @@ bool InsetNote::getStatus(Cursor & cur, FuncRequest const & cmd, } -void InsetNote::addToToc(DocIterator const & cpit) const +void InsetNote::addToToc(DocIterator const & cpit, bool output_active) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); - + Toc & toc = buffer().tocBackend().toc("note"); InsetLayout const & il = getLayout(); docstring str = translateIfPossible(il.labelstring()) + from_ascii(": "); text().forToc(str, TOC_ENTRY_LENGTH); - toc.push_back(TocItem(pit, 0, str, toolTipText(docstring(), 3, 60))); + toc.push_back(TocItem(pit, 0, str, output_active, toolTipText(docstring(), 3, 60))); + // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit); + bool doing_output = output_active && producesOutput(); + InsetCollapsable::addToToc(cpit, doing_output); } diff --git a/src/insets/InsetNote.h b/src/insets/InsetNote.h index 255930fedc..dd580da8a0 100644 --- a/src/insets/InsetNote.h +++ b/src/insets/InsetNote.h @@ -96,7 +96,7 @@ private: /// bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// void doDispatch(Cursor & cur, FuncRequest & cmd); /// diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index abfecbae12..680323cc4a 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -296,7 +296,7 @@ void InsetRef::updateBuffer(ParIterator const & it, UpdateType) } -void InsetRef::addToToc(DocIterator const & cpit) const +void InsetRef::addToToc(DocIterator const & cpit, bool output_active) const { docstring const & label = getParam("reference"); if (buffer().insetLabel(label)) @@ -306,7 +306,7 @@ void InsetRef::addToToc(DocIterator const & cpit) const // It seems that this reference does not point to any valid label. screen_label_ = _("BROKEN: ") + screen_label_; Toc & toc = buffer().tocBackend().toc("label"); - toc.push_back(TocItem(cpit, 0, screen_label_)); + toc.push_back(TocItem(cpit, 0, screen_label_, output_active)); } diff --git a/src/insets/InsetRef.h b/src/insets/InsetRef.h index 09122c1ebe..21a7ec1c7c 100644 --- a/src/insets/InsetRef.h +++ b/src/insets/InsetRef.h @@ -68,7 +68,7 @@ public: /// void updateBuffer(ParIterator const & it, UpdateType); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// bool forceLTR() const { return true; } //@} diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 120eb13d31..379d296344 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -3892,13 +3892,13 @@ void InsetTabular::updateBuffer(ParIterator const & it, UpdateType utype) } -void InsetTabular::addToToc(DocIterator const & cpit) const +void InsetTabular::addToToc(DocIterator const & cpit, bool output_active) const { DocIterator dit = cpit; dit.forwardPos(); size_t const end = dit.nargs(); for ( ; dit.idx() < end; dit.top().forwardIdx()) - cell(dit.idx())->addToToc(dit); + cell(dit.idx())->addToToc(dit, output_active); } diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 2f0ff3b760..e4651a3b8f 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -919,7 +919,7 @@ public: /// Update the counters of this inset and of its contents void updateBuffer(ParIterator const &, UpdateType); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// bool completionSupported(Cursor const &) const; diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index b3baf93ba1..df957660f2 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -811,7 +811,7 @@ void InsetText::forToc(docstring & os, size_t maxlen) const } -void InsetText::addToToc(DocIterator const & cdit) const +void InsetText::addToToc(DocIterator const & cdit, bool output_active) const { DocIterator dit = cdit; dit.push_back(CursorSlice(const_cast(*this))); @@ -819,6 +819,9 @@ void InsetText::addToToc(DocIterator const & cdit) const BufferParams const & bufparams = buffer_->params(); int const min_toclevel = bufparams.documentClass().min_toclevel(); + // we really should have done this before we got here, but it + // can't hurt too much to do it again + bool const doing_output = output_active && producesOutput(); // For each paragraph, traverse its insets and let them add // their toc items @@ -835,7 +838,7 @@ void InsetText::addToToc(DocIterator const & cdit) const Inset & inset = *it->inset; dit.pos() = it->pos; //lyxerr << (void*)&inset << " code: " << inset.lyxCode() << std::endl; - inset.addToToc(dit); + inset.addToToc(dit, doing_output); if (inset.lyxCode() == ARG_CODE) arginset = inset.asInsetText(); } @@ -853,11 +856,11 @@ void InsetText::addToToc(DocIterator const & cdit) const par.forToc(tocstring, TOC_ENTRY_LENGTH); dit.pos() = 0; toc.push_back(TocItem(dit, toclevel - min_toclevel, - tocstring, tocstring)); + tocstring, output_active, tocstring)); } // And now the list of changes. - par.addChangesToToc(dit, buffer()); + par.addChangesToToc(dit, buffer(), doing_output); } } diff --git a/src/insets/InsetText.h b/src/insets/InsetText.h index a77bf92875..e986d3650d 100644 --- a/src/insets/InsetText.h +++ b/src/insets/InsetText.h @@ -174,7 +174,7 @@ public: /// void forToc(docstring &, size_t) const; /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// Inset * clone() const { return new InsetText(*this); } /// diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index bbfda5aee5..2a47f20356 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -284,7 +284,7 @@ void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype) } -void InsetMathHull::addToToc(DocIterator const & pit) const +void InsetMathHull::addToToc(DocIterator const & pit, bool output_active) const { if (!buffer_) { //FIXME: buffer_ should be set at creation for this inset! Problem is @@ -299,8 +299,8 @@ void InsetMathHull::addToToc(DocIterator const & pit) const if (!numbered_[row]) continue; if (label_[row]) - label_[row]->addToToc(pit); - toc.push_back(TocItem(pit, 0, nicelabel(row))); + label_[row]->addToToc(pit, output_active); + toc.push_back(TocItem(pit, 0, nicelabel(row), output_active)); } } diff --git a/src/mathed/InsetMathHull.h b/src/mathed/InsetMathHull.h index 3ac17780b8..0284e6e43f 100644 --- a/src/mathed/InsetMathHull.h +++ b/src/mathed/InsetMathHull.h @@ -42,7 +42,7 @@ public: /// void updateBuffer(ParIterator const &, UpdateType); /// - void addToToc(DocIterator const &) const; + void addToToc(DocIterator const & di, bool output_active) const; /// InsetMathHull & operator=(InsetMathHull const &); /// -- 2.39.5