- if (pit == firstpit)
- return;
-
- int const cur_depth = pars[pit].getDepth();
- pit_type prev_pit = pit - 1;
- while (true) {
- int const prev_depth = pars[prev_pit].getDepth();
- int const prev_labeltype = pars[prev_pit].layout()->labeltype;
- if (prev_depth <= cur_depth) {
- if (prev_labeltype != LABEL_ENUMERATE) {
- switch (pars[pit].itemdepth) {
- case 0:
- counters.reset("enumi");
- case 1:
- counters.reset("enumii");
- case 2:
- counters.reset("enumiii");
- case 3:
- counters.reset("enumiv");
- }
- }
- break;
- }
-
- if (prev_pit == firstpit)
- break;
-
- --prev_pit;
+ Paragraph const & par = *it;
+ BOOST_ASSERT(par.layout()->labeltype == LABEL_ENUMERATE);
+ lyx::depth_type const cur_depth = par.getDepth();
+ ParIterator prev_it = it;
+ while (prev_it.pit()) {
+ --prev_it.top().pit();
+ Paragraph const & prev_par = *prev_it;
+ if (prev_par.getDepth() <= cur_depth)
+ return prev_par.layout()->labeltype != LABEL_ENUMERATE;