+ } else
+ // The following line is needed because the value of
+ // p.it may be invalid if inset was added/removed to
+ // the paragraph pointed by the iterator
+ p.it = p.par->insetlist.begin();
+
+ // Try to find the next inset that contains paragraphs
+ InsetList::iterator end = p.par->insetlist.end();
+ for (; p.it != end; ++p.it) {
+ Paragraph * par = p.it.getInset()->getFirstParagraph(0);
+ if (par) {
+ p.index = 0;
+ positions.push(ParPosition(par));
+ return *this;
+ }
+ }
+ // Try to go to the next paragarph
+ if (p.par->next()) {
+ p = ParPosition(p.par->next());
+ return *this;