The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit 86994bf75320524ec656fd70950633c83d445a6c
Author: Richard Heck <[email protected]>
Date:   Fri Mar 8 16:18:26 2013 -0500

    Add a member to TocItem that tells us whether the item in question
    is included in output.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 2379f49..b646cf6 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 29095f9..d24df40 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 84c4fea..9219edc 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 f039a71..3ed382a 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 0ea959f..dc46179 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 0b9f6b6..c8bf4ad 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 f3bd1e8..bc7a414 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 a79ce38..36a0f92 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 11774a3..2676d93 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<InsetBranch &>(*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 f64f616..7521fbe 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 764e940..6891d63 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 5882243..37566ca 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 743bda6..b21ae6a 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 0bd048e..53f42da 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 a7139f9..e48d67c 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<InsetFoot &>(*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 6106fcd..f308b14 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 eec663e..2aec82f 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 d8ad8f8..a6e6ce3 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 2bf3ae7..70050fd 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<docstring>(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 cbc2db0..3e28346 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 c754ac0..0d2230d 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<InsetIndex &>(*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 42d6761..a980a42 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 557548d..c2ef896 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<InsetRef 
*>(it->first)->screenLabel()));
+                               static_cast<InsetRef 
*>(it->first)->screenLabel(),
+                         output_active));
        }
 }
 
diff --git a/src/insets/InsetLabel.h b/src/insets/InsetLabel.h
index c28ef1c..3c9bbd0 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 d7ec180..9543e8f 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<InsetMarginal &>(*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 8f7c89a..38e1a9c 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 ea12997..19f6035 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<InsetNote &>(*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 255930f..dd580da 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 abfecba..680323c 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 09122c1..21a7ec1 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 120eb13..379d296 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 2f0ff3b..e4651a3 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 b3baf93..df95766 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<InsetText &>(*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 a77bf92..e986d36 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 bbfda5a..2a47f20 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 3ac1778..0284e6e 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 &);
        ///

-----------------------------------------------------------------------

Summary of changes:
 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(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to