Fix bug #7166: Insets that shouldn't appear in the TOC were included. From now on use AS_STR_INTOC as an option for Paragraph::asString() for insets that should not be included in the strings for the TOC, like IndexInset.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36969 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2010-12-20 19:18:56 +00:00
parent 8b88c3edde
commit 8adcffff0c
4 changed files with 12 additions and 8 deletions

View File

@ -2928,8 +2928,11 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
|| (c == '\n' && (options & AS_STR_NEWLINES)))
os.put(c);
else if (c == META_INSET && (options & AS_STR_INSETS)) {
getInset(i)->toString(os);
if (getInset(i)->asInsetMath())
Inset const * inset = getInset(i);
if ((options & AS_STR_INTOC) && !inset->isInToc())
continue;
inset->toString(os);
if (inset->asInsetMath())
os << " ";
}
}
@ -3578,7 +3581,7 @@ SpellChecker::Result Paragraph::spellCheck(pos_type & from, pos_type & to,
if (from == to || from >= size())
return result;
docstring word = asString(from, to, AS_STR_INSETS + AS_STR_SKIPDELETE);
docstring word = asString(from, to, AS_STR_INSETS | AS_STR_SKIPDELETE);
Language * lang = d->getSpellLanguage(from);
wl = WordLangTuple(word, lang);

View File

@ -102,7 +102,8 @@ enum AsStringParameter
AS_STR_LABEL = 1, ///< Prefix with paragraph label.
AS_STR_INSETS = 2, ///< Go into insets.
AS_STR_NEWLINES = 4, ///< Get also newline characters.
AS_STR_SKIPDELETE = 8 ///< Skip deleted text in change tracking.
AS_STR_SKIPDELETE = 8, ///< Skip deleted text in change tracking.
AS_STR_INTOC = 16 ///< Skip insets that are not supposed to go into the TOC
};

View File

@ -149,7 +149,7 @@ bool TocBackend::updateItem(DocIterator const & dit)
*static_cast<InsetArgument&>(inset).paragraphs().begin();
if (!par.labelString().empty())
tocstring = par.labelString() + ' ';
tocstring += inset_par.asString(AS_STR_INSETS);
tocstring += inset_par.asString(AS_STR_INSETS | AS_STR_INTOC);
break;
}
}
@ -157,7 +157,7 @@ bool TocBackend::updateItem(DocIterator const & dit)
int const toclevel = par.layout().toclevel;
if (toclevel != Layout::NOT_IN_TOC && toclevel >= min_toclevel
&& tocstring.empty())
tocstring = par.asString(AS_STR_LABEL | AS_STR_INSETS);
tocstring = par.asString(AS_STR_LABEL | AS_STR_INSETS | AS_STR_INTOC);
const_cast<TocItem &>(*toc_item).str_ = tocstring;

View File

@ -709,7 +709,7 @@ void InsetText::addToToc(DocIterator const & cdit)
*static_cast<InsetArgument&>(inset).paragraphs().begin();
if (!par.labelString().empty())
tocstring = par.labelString() + ' ';
tocstring += insetpar.asString(AS_STR_INSETS);
tocstring += insetpar.asString(AS_STR_INSETS | AS_STR_INTOC);
break;
}
default:
@ -722,7 +722,7 @@ void InsetText::addToToc(DocIterator const & cdit)
dit.pos() = 0;
// insert this into the table of contents
if (tocstring.empty())
tocstring = par.asString(AS_STR_LABEL | AS_STR_INSETS);
tocstring = par.asString(AS_STR_LABEL | AS_STR_INSETS | AS_STR_INTOC);
toc.push_back(TocItem(dit, toclevel - min_toclevel,
tocstring, tocstring));
}