X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTocBackend.C;h=48847483a05e807b8ac893e735cd8798827b3128;hb=e7f4618bcce770369cf46335c2c7f0164b4b8857;hp=841c4cf090d175da8363592a9443357a743d867c;hpb=2e7b4eafd15f1217909513601729713b41158cb2;p=lyx.git diff --git a/src/TocBackend.C b/src/TocBackend.C index 841c4cf090..48847483a0 100644 --- a/src/TocBackend.C +++ b/src/TocBackend.C @@ -203,8 +203,19 @@ TocIterator const TocBackend::item( Toc const & toc_vector = toclist_it->second; TocIterator last = toc_vector.begin(); TocIterator it = toc_vector.end(); + if (it == last) + return it; + --it; + ParConstIterator par_it_text = par_it; + if (par_it_text.inMathed()) + // It would be better to do + // par_it_text.backwardInset(); + // but this method does not exist. + while (par_it_text.inMathed()) + par_it_text.backwardPos(); + for (; it != last; --it) { // A good solution for Items inside insets would be to do: @@ -215,7 +226,7 @@ TocIterator const TocBackend::item( // But for an unknown reason, std::distance(current, it->par_it_) always // returns a positive value and std::distance(it->par_it_, current) takes forever... // So for now, we do: - if (it->par_it_.pit() <= par_it.pit()) + if (it->par_it_.pit() <= par_it_text.pit()) return it; } @@ -224,7 +235,7 @@ TocIterator const TocBackend::item( } -void TocBackend::asciiTocList(string const & type, odocstream & os) const +void TocBackend::writePlaintextTocList(string const & type, odocstream & os) const { TocList::const_iterator cit = tocs_.find(type); if (cit != tocs_.end()) {