]> git.lyx.org Git - lyx.git/blobdiff - src/dociterator.h
* src/support/unicode.C
[lyx.git] / src / dociterator.h
index 07ade45dedee730ac86d0b10d40f682de88eaf28..1201b04956424b2a4c1a820e6eb3bf5feb2fa091 100644 (file)
 #include <vector>
 #include <iosfwd>
 
+
+namespace lyx {
+
 class LyXText;
 class MathAtom;
 class Paragraph;
-class Row;
-
 
 
 // only needed for gcc 2.95, remove when support terminated
@@ -39,10 +40,6 @@ class DocIterator // : public std::vector<CursorSlice>
 public:
        /// type for cell number in inset
        typedef CursorSlice::idx_type idx_type;
-       /// type for paragraph numbers positions within a cell
-       typedef CursorSlice::pit_type pit_type;
-       /// type for cursor positions within a cell
-       typedef CursorSlice::pos_type pos_type;
        /// type for row indices
        typedef CursorSlice::row_type row_type;
        /// type for col indices
@@ -156,14 +153,12 @@ public:
        Paragraph & paragraph();
        /// the paragraph we're in
        Paragraph const & paragraph() const;
-       /// the row in the paragraph we're in
-       Row & textRow();
-       /// the row in the paragraph we're in
-       Row const & textRow() const;
        ///
        LyXText * text();
        ///
        LyXText const * text() const;
+       /// the containing inset or the cell, respectively
+       InsetBase * realInset() const;
        ///
        InsetBase * innerInsetOfType(int code) const;
        ///
@@ -176,8 +171,11 @@ public:
        //
        /// 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
@@ -214,6 +212,9 @@ public:
        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
@@ -274,8 +275,6 @@ public:
        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
@@ -293,4 +292,7 @@ private:
        std::vector<CursorSlice> data_;
 };
 
+
+} // namespace lyx
+
 #endif