commit 8d76be389d880e1e4e837434cbfb97497409c0e1
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Mon Apr 11 12:00:19 2016 +0200
When a counter is stepped, reset recursively all slaves
Fixes bug #10063.
diff --git a/src/Counters.cpp b/src/Counters.cpp
index 1c8bdf6..826825a 100644
--- a/src/Counters.cpp
+++ b/src/Counters.cpp
@@ -265,6 +265,19 @@ 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::step(docstring const & ctr, UpdateType utype)
{
CounterList::iterator it = counterList_.find(ctr);
@@ -280,13 +293,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);
}
diff --git a/src/Counters.h b/src/Counters.h
index ce122c4..4ba0d00 100644
--- a/src/Counters.h
+++ b/src/Counters.h
@@ -128,10 +128,10 @@ public:
void addto(docstring const & ctr, int val);
///
int value(docstring const & ctr) const;
- /// Increment by one counter named by arg, and zeroes slave
+ /// Reset recursively all the counters that are slaves of the one named
by \c ctr.
+ void resetSlaves(docstring const & ctr);
+ /// Increment by one counter named by \c ctr, and zeroes slave
/// counter(s) for which it is the master.
- /// Sub-slaves are not zeroed! That happens at slave's first
- /// step 0->1. Seems to be sufficient.
/// \param utype determines whether we track the counters.
void step(docstring const & ctr, UpdateType utype);
/// Reset all counters, and all the internal data structures
diff --git a/status.21x b/status.21x
index 6868718..6ea9673 100644
--- a/status.21x
+++ b/status.21x
@@ -45,7 +45,6 @@ What's new
-
* DOCUMENTATION AND LOCALIZATION
- New German translation of the PDF-comment example file.
@@ -154,7 +153,9 @@ What's new
- Fix a crash when introducing a new shortcut (bug 9869).
-- Fix initialization oblem with default Inset Layout.
+- Fix initialization problem with default Inset Layout.
+
+- When a counter is stepped, reset recursively all subcounters (bug #10063).
* INTERNALS