X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCounters.cpp;h=2daac53224dca0a4f26e6850d3b7d7a228e6c1be;hb=cc4bfc7f04dc5a16347172f064f910ff3d26df9d;hp=56ab1b508c1a544e6e5762aae8190a841150e54e;hpb=053d02d176412fd39c2e95db31e86df2d9c3b365;p=lyx.git diff --git a/src/Counters.cpp b/src/Counters.cpp index 56ab1b508c..2daac53224 100644 --- a/src/Counters.cpp +++ b/src/Counters.cpp @@ -265,6 +265,31 @@ int Counters::value(docstring const & ctr) const } +void Counters::resetSlaves(docstring const & ctr) +{ + CounterList::iterator it = counterList_.begin(); + CounterList::iterator const end = counterList_.end(); + for (; it != end; ++it) { + if (it->second.master() == ctr) { + it->second.reset(); + resetSlaves(it->first); + } + } +} + + +void Counters::stepMaster(docstring const & ctr, UpdateType utype) +{ + CounterList::iterator it = counterList_.find(ctr); + if (it == counterList_.end()) { + lyxerr << "step: Counter does not exist: " + << to_utf8(ctr) << endl; + return; + } + step(it->second.master(), utype); +} + + void Counters::step(docstring const & ctr, UpdateType utype) { CounterList::iterator it = counterList_.find(ctr); @@ -280,13 +305,8 @@ void Counters::step(docstring const & ctr, UpdateType utype) counter_stack_.pop_back(); counter_stack_.push_back(ctr); } - it = counterList_.begin(); - CounterList::iterator const end = counterList_.end(); - for (; it != end; ++it) { - if (it->second.master() == ctr) { - it->second.reset(); - } - } + + resetSlaves(ctr); } @@ -462,7 +482,7 @@ docstring const fnsymbolCounter(int const n) }; } -} // namespace anon +} // namespace docstring Counters::labelItem(docstring const & ctr, @@ -525,8 +545,6 @@ docstring Counters::flattenLabelString(docstring const & counter, string const & lang, vector & callers) const { - docstring label; - if (find(callers.begin(), callers.end(), counter) != callers.end()) { // recursion detected lyxerr << "Warning: Recursion in label for counter `"