]> git.lyx.org Git - lyx.git/commitdiff
InsetRef::addTocToc(): add an entry for the referenced label if not already present...
authorAbdelrazak Younes <younes@lyx.org>
Wed, 27 Feb 2008 17:02:17 +0000 (17:02 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Wed, 27 Feb 2008 17:02:17 +0000 (17:02 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23286 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/InsetRef.cpp

index b9e7909b220b45b4cc00c1e55a468e7f6882130d..7da23941b6cca00571ec77c0bf49e327c7e32a6c 100644 (file)
@@ -160,18 +160,24 @@ void InsetRef::addToToc(Buffer const & buf,
 {
        docstring const & label = getParam("reference");
        Toc & toc = buf.tocBackend().toc("label");
-       Toc::const_iterator it = toc.begin();
-       Toc::const_iterator end = toc.end();
+       Toc::iterator it = toc.begin();
+       Toc::iterator end = toc.end();
        for (; it != end; ++it) {
                if (it->str() == label)
                        break;
        }
 
-       if (it == end)
-               //FIXME: this is an orphan, is this really possible?
+       docstring const reflabel = getScreenLabel(buf);
+       if (it == end) {
+               // This label has not been parsed yet so we just add it temporarily.
+               // InsetLabel::addTocToc() will fix that later.
+               toc.push_back(TocItem(cpit, 0, label));
+               toc.push_back(TocItem(cpit, 1, reflabel));
                return;
+       }
 
-       docstring const reflabel = getScreenLabel(buf);
+       // The Toc item for this label already exists so let's add
+       // this inset to this node.
        ++it;
        while (it->str() == reflabel && it != end)
                ++it;