Paragraph & DocIterator::paragraph()
{
+ if (!inTexted())
+ lyxerr << *this << endl;
BOOST_ASSERT(inTexted());
return top().paragraph();
}
}
+void DocIterator::forwardPosNoDescend()
+{
+ CursorSlice & tip = top();
+ pos_type const lastp = lastpos();
+
+ // move on one position if possible
+ if (tip.pos() < lastp) {
+ //lyxerr << "... next pos" << endl;
+ ++tip.pos();
+ return;
+ }
+ //lyxerr << "... no next pos" << endl;
+
+ // otherwise move on one paragraph if possible
+ if (tip.pit() < lastpit()) {
+ //lyxerr << "... next par" << endl;
+ ++tip.pit();
+ tip.pos() = 0;
+ return;
+ }
+ //lyxerr << "... no next pit" << endl;
+
+ // otherwise try to move on one cell if possible
+ if (tip.idx() < lastidx()) {
+ //lyxerr << "... next idx" << endl;
+ ++tip.idx();
+ tip.pit() = 0;
+ tip.pos() = 0;
+ return;
+ }
+ //lyxerr << "... no next idx" << endl;
+
+ // otherwise we can't move on
+}
+
+
void DocIterator::forwardPar()
{
forwardPos();
- while (!empty() && (!inTexted() || pos() != 0))
+
+#if 0
+ DocIterator cmp(*this);
+#endif
+
+ while (!empty() && (!inTexted() || pos() != 0)) {
+ if (inTexted()) {
+ pos_type const lastp = lastpos();
+ Paragraph const & par = paragraph();
+ pos_type & pos = top().pos();
+ while (pos < lastp && !par.isInset(pos))
+ ++pos;
+ }
forwardPos();
+ }
+
+#if 0
+ while (!cmp.empty() && (!cmp.inTexted() || cmp.pos() != 0))
+ cmp.forwardPos();
+ BOOST_ASSERT(cmp == *this);
+#endif
}