]> git.lyx.org Git - lyx.git/blobdiff - src/dociterator.h
Continue to improve GtkLengthEntry
[lyx.git] / src / dociterator.h
index 5b410ae9a7c10f0596111a2c5435ddd566bf5370..f8f4b490f52cb6c2bc82dc74c534bf9770402141 100644 (file)
@@ -164,6 +164,8 @@ public:
        LyXText * text();
        ///
        LyXText const * text() const;
+       /// the containing inset or the cell, respectively
+       InsetBase * realInset() const;
        ///
        InsetBase * innerInsetOfType(int code) const;
        ///
@@ -176,8 +178,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
@@ -207,13 +212,16 @@ public:
        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
@@ -274,6 +282,12 @@ 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
+       pos_type & pos() { return data_.back().pos(); }
        ///
        friend std::ostream &
        operator<<(std::ostream & os, StableDocIterator const & cur);