class Row;
-
// only needed for gcc 2.95, remove when support terminated
template <typename A, typename B>
bool ptr_cmp(A const * a, B const * b)
LyXText * text();
///
LyXText const * text() const;
+ /// the containing inset or the cell, respectively
+ InsetBase * realInset() const;
///
InsetBase * innerInsetOfType(int code) const;
///
//
/// move on one logical position, do not descend into nested insets
void forwardPosNoDescend();
- /// move on one logical position, descend into nested insets
- void forwardPos();
+ /**
+ * move on one logical position, descend into nested insets
+ * skip collapsed insets if \p ignorecollapsed is true
+ */
+ void forwardPos(bool ignorecollapsed = false);
/// move on one physical character or inset
void forwardChar();
/// move on one paragraph
friend bool operator==(DocIterator const &, DocIterator const &);
///
friend class StableDocIterator;
-protected:
+//protected:
///
void clear() { slices_.clear(); }
///
void push_back(CursorSlice const & sl) { slices_.push_back(sl); }
///
void pop_back() { slices_.pop_back(); }
+ /// recompute the inset parts of the cursor from the document data
+ void updateInsets(InsetBase * inset);
+
private:
/**
* When the cursor position is i, is the cursor after the i-th char
DocIterator asDocIterator(InsetBase * start) const;
///
size_t size() const { return data_.size(); }
+ /// type for cursor positions within a cell
+ typedef CursorSlice::pos_type pos_type;
+ /// return the position within the paragraph
+ pos_type pos() const { return data_.back().pos(); }
+ /// return the position within the paragraph
+ pos_type & pos() { return data_.back().pos(); }
///
friend std::ostream &
operator<<(std::ostream & os, StableDocIterator const & cur);